我不止一次在用g++构建代码时遇到过以下问题:
一切似乎都很好。你编译,运行然后 boom - 段错误不知从哪里跳到你身上。您开始查看代码,找不到任何东西,执行 make clean && make,问题就消失了。
我已经看到这种情况发生在不同的 g++ 版本、不同的机器、不同的内核上。
为什么会这样?有什么办法可以预防吗?
最佳答案
如果您更改头文件,则 Makefile 中没有机制来确定哪些源文件包含这些头文件,并且需要重新编译。您可能遇到的一个问题是,如果头文件 A.h
定义了一个类 A
,并且您添加、删除或重新排列 A
的成员,则大小类的变化。然而,旧的大小仍在某些源文件中使用,因此当您在堆栈或堆。 make clean
强制传播有关该类的新信息,因为所有源文件都必须重新编译。
如果您对头文件进行了重大更改,最安全的做法可能是完全重建。
关于c++ - 完全重建后奇怪的段错误消失了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11042150/