【发布时间】:2016-09-24 22:52:03
【问题描述】:
我动态分配了 2 个不同的数组,每个数组有 100 万个单元格。一个数组保存整数,一个数组保存指向固定长度字符串的指针。当我使用 gdb 运行程序时,出现错误:free(): invalid next size (fast)。我必须以非法方式释放内存,但我不知道如何。我在下面使用 malloc 和 free 的地方发布了我的代码的简短 sn-p。你能告诉我我做错了什么吗?谢谢。
【问题讨论】:
-
一个数组保存指向固定长度字符串的指针 然后不要使用
malloc()。还要经常检查malloc()的返回值和NULL,不要写x -> y,这很可怕,只是x->y很好,因为这种运算符使表达式与其他运算符不同,同样如此对于.。 -
你确定你将正确的指针传递给释放函数,还是你没有做两次?
-
@iharob,对不起,我应该提到我将来可能不会使用 100 万个单元格,它可能会因输入而异。
-
一般建议大家发MCVE。您的代码是一个很好的例子,如果这样做已经告诉您您发布的代码 有效 表明其他地方存在问题。 ideone.com/xmunl3
-
@TheEyesHaveIt 如果您要使用固定大小的字符串,请考虑使用这样的 typedef:ideone.com/2rwXb2
标签: c memory-management memory-leaks gdb free