我遇到了一个我无法弄清楚的崩溃 - 在fork之前分配了一个struct。在结构中,条件分配的内存也分配给字符串。如果在fork之前或之后父级访问此结构,则不会遇到任何问题。
当子进程尝试访问结构时,结构内存中的所有值都是垃圾,但是valgrind并没有抱怨对结构的内存访问,所以它似乎认为内存应该是有效的。但是,当访问结构中的字符串时 - 指针是垃圾值 - 程序崩溃。 Valgrind指出内存最近没有被分配或释放,但这是预期的,因为它是一个垃圾值。
有没有人经历过类似的事情?到目前为止,我的搜索没有找到任何有用的提示。
编辑:有条件分配的内存
答案 0 :(得分:3)
fork只会复制内存。因此它在叉子之前就已经腐败了。
为什么不在那里放置一个断点或者在fork之前进行相同的内存访问以体验同样的问题。