奇怪的Segfaults在完全重建后消失

时间:2012-06-14 22:20:24

标签: c++ g++ segmentation-fault

在使用g ++构建代码时,我遇到以下问题不止一次:

一切似乎都很好。你编译,运行然后繁荣 - 一个段错误突然向你跳跃。你开始看代码,找不到任何东西,做干净&&制造,问题就消失了。

我已经看到这种情况发生在不同的g ++版本,不同的机器,不同的内核上。

为什么会这样?有没有办法阻止它?

1 个答案:

答案 0 :(得分:2)

如果更改头文件,则Makefile中没有任何机制可以确定哪些源文件包含这些文件,需要重新编译。您可能遇到的问题是,如果标头文件A.h定义了类A,并且您添加或删除或重新排列A的成员,则类的大小会发生变化。但是,旧的大小仍然在某些源文件中使用,因此当您在堆栈上或在堆栈上创建类的实例时,最终可能会导致其中一个源文件过度分配或分配不足。堆。 make clean强制关于类的新信息传播,因为所有源文件都必须重新编译。

如果您对头文件进行了重大更改,那么完全重建可能是最安全的。