【问题标题】:Getting SIGABRT when freeing char pointer释放 char 指针时获取 SIGABRT
【发布时间】: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是完整的布局。

标签: c string char malloc free


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2020-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多