Cal*_*Lau 2 c arrays pointers char
我正在开发一个项目,我必须在其中创建一个字符串数组(char*),但是,当我尝试释放数组数组时,会给出"double free or corruption",我无法弄清楚问题.
这里的代码提取是一个简化版本,它可能看起来毫无意义,但它说明了我面临的问题:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char **cptr;
int i;
cptr = malloc(256*sizeof(char));
for (i=0; i<256; i++) {
cptr[i] = calloc(2, sizeof(char));
cptr[i][0] = (char)i;
}
for (i=0; i<256; i++) {
free(cptr[i]);
}
free(cptr);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
cptr = malloc(256 * sizeof(char));
Run Code Online (Sandbox Code Playgroud)
以上是错误的.即使您计算上面分配的字节数,也是256字节.如果指针的大小在你的机器上是4个字节,那么64个指针就足够了.相反,你需要256个指针.使用
cptr = malloc(256 * sizeof(char *));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |