malloc() 和 free() 的 C 动态内存问题

C dynamic memory problems with malloc() and free()

我动态分配了 2 个不同的数组,每个数组有 100 万个单元格。一个数组保存整数,一个数组保存指向固定长度字符串的指针。当我 运行 我的程序使用 gdb 时,我收到错误:free(): invalid next size (fast)。我一定是在以非法方式释放内存,但我不知道如何释放内存。我在下面发布了我使用 malloc 和 free 的代码的简短片段。你能告诉我我做错了什么吗?谢谢。

除了有点奇怪,(请参阅 iharob 的评论)您向我们展示的代码看起来是正确的。

错误很可能不在您向我们展示的代码中。

可能发生的情况是,您在其他地方 filling-in 那些 "words" 有字符的人,并且您正在存储从 wc->allWords[i] 地址开始的 20 多个字符。因此,您正在写入一个内存块的末尾,并覆盖下一个内存块的 header。

然后,稍后,您尝试释放的块地址是正确的,但是您损坏了块的 header,因此 free() 失败。