C内存溢出(v2)

Khr*_*nos 2 c memory allocation

编辑:使用新的Pastebin链接更新了代码,但它仍然在循环时停留在info-> citizen [x] - > name.在循环中添加了realloc并整理了代码.任何更多的评论将不胜感激

我遇到了一些内存分配溢出的问题

http://pastebin.com/vukRGkq9(v2)

无论我尝试什么,根本没有为info-> citizen分配足够的内存,而gdb经常说它无法访问info-> citizen [x] - > name.

有时,我甚至会在strlen的printf语句之后直接得到KERN_INVALID_ADDRESS错误(由于错误导致gdb暂停,代码中没有使用Strlen,但我假设printf以某种方式使用strlen).我认为这与结构如何分配内存有关.所以我想知道是否有人可以看看?

Vic*_*kin 7

你不应该这样做malloc(sizeof(PEOPLE*)),因为它为指针分配了精确的字节数(32位拱上的4个字节).
似乎你要做的事情是malloc(sizeof(PEOPLE) * N)N是最大值.要放入该内存块的PEOPLE数量.