【发布时间】:2009-10-18 15:36:15
【问题描述】:
char **arr;
arr = (char **)calloc(1,sizeof(char*));
for(i = 0; i< 16; i++)
if(arr[i] = (char *)calloc(1, 2*sizeof(char)) == NULL)
perror("Memory cannot be allocated to arr[i]", %d);
当我尝试将内存分配给 arr[i] 时,上面的代码在 for 循环中引发错误。这个分配有什么问题。本质上,我想存储 16 个长度为 2 的字符串。我也尝试过使用指针数组(char *arr[16])。我尝试使用 malloc() 和 calloc() 查找有关双指针初始化的资源,但找不到很多 .如果您能指出一些链接,那将不胜感激。 谢谢。
【问题讨论】:
-
代码不可编译。通常建议您发布您正在使用的真实代码。
-
@Andrey - 我没有在错误中使用 %d 。我刚刚打印了错误字符串。
-
这还不是全部。您对
if下的arr[i]的分配与NULL的比较缺少大括号,这使其关联不正确。它也无法编译。