【发布时间】:2010-10-27 12:56:51
【问题描述】:
编辑:使用新的 Pastebin 链接更新了代码,但它仍在 info->citizens[x]->name while 循环处停止。在循环中添加了 realloc 并整理了代码。任何更多的 cmets 将不胜感激
我遇到了一些内存分配溢出问题
http://pastebin.com/vukRGkq9 (v2)
无论我尝试什么,都没有为 info->citizens 分配足够的内存,而 gdb 经常说它无法访问 info->citizens[x]->name。
有时,我什至会在 strlen 的 printf 语句之后直接得到 KERN_INVALID_ADDRESS 错误(在 gdb 由于错误而停止的代码中没有使用 strlen,但我假设 printf 以某种方式使用 strlen) .我认为这与结构如何分配内存有关。所以我想知道是否有人可以看看?
【问题讨论】:
-
您是否尝试过尽可能地缩小代码以便只显示有问题的行?对我们和您来说,调查会容易得多。
-
“更新代码”是什么意思?你的意思是你已经对你的问题做出了可怕的答案,因为它们现在指向不存在的行吗?哦,是的,确实如此,这两个版本的差异足以包含完全不同的错误集。嗯……
标签: c memory allocation