gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 02:34:14 24 4
gpt4 key购买 nike

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

最佳答案

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

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

可能发生的情况是,您在其他地方用字符填充了您的那些“单词”,并且存储了从地址 wc->allWords[i] 开始的 20 多个字符。 .因此,您正在写入一个内存块的末尾,并越过下一个内存块的 header 。

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

关于malloc() 和 free() 的 C 动态内存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39681676/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com