这就是我分配所需空间的方式:

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我可以看到我有一个不为null的指针,并带有想要的"all"字符串

但是由于某种原因,当尝试释放数组中的第一位时得到SIGABRT

知道为什么会这样吗?

最佳答案

也许您的指针超出范围了?这是同一功能吗?
除非我们看到完整的代码,否则我们无法确定。

10-07 19:09
查看更多