下面的代码分配矩阵4X7有什么问题吗?
char** imd = (char**)calloc(4, 7);
for (i=0; i < 4; i++)
imd[i] = (char*)calloc(7, sizeof(char));
//then free allocated memory as below
for (i=0; i<4; i++)
free(imd[i]);
free(imd); 发布于 2014-08-11 08:30:36
首先,您需要为4行分配内存。每一行都是一个指针。但是你在分配内存给
char** imd = (char**)calloc(4, 7); // Bug在这里calloc(4, 7)根本没有任何意义。所以试试下面的修复方法-
char** imd = (char**)calloc(4, sizeof(char *)); // Fix
for (i=0; i < 4; i++)
imd[i] = (char*)calloc(7, sizeof(char));
//then free allocated memory as below
for (i=0; i<4; i++)
free(imd[i]);
free(imd); 发布于 2014-08-11 08:32:02
char** imd = (char**)calloc(4, 7);至
char** imd = (char**)calloc(4, sizeof(char*));发布于 2014-08-11 08:28:39
当以这种方式使用calloc时,不需要4个char *s,每个char *都可以指向大小为7的内存区域,而是请求4个元素,每个元素为7个字节。
你想做的是:
char ** imd=(char **)calloc(4,sizeof(char *));这将给您一个区域的内存,零,空间四个char *s。
假设是sizeof(char *)<=7,您现在拥有的代码可能会工作,但是它不应该被认为是正确的,因此它“有问题”。
https://stackoverflow.com/questions/25238783
复制相似问题