【发布时间】:2013-10-23 20:25:15
【问题描述】:
这就是我分配所需空间的方式:
char *all_type_str;
...
all_type_str = malloc(sizeof(char)*4);
设置字符串:
strcpy(all_type_str,"all");
将其设置在不同的数组中:
...
values[0].value = all_type_str;
并释放值数组:
for (i=0; i<arrSize; i++)
{
free(values[i].value); // <-- SIGABRT
}
free(values);
分配值数组:
values = malloc(sizeof(struct cnf)*adjArrSize);
使用 gdb 我可以看到我有一个非空指针和想要的 "all" 字符串
但由于某种原因,我在尝试释放数组中的第一个位置时得到SIGABRT。
知道为什么会这样吗?
【问题讨论】:
-
我们需要看看
values是如何分配的,arrSize是完整的布局。