c++ - 完全重建后奇怪的段错误消失了

标签 c++ g++ segmentation-fault

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

一切似乎都很好。你编译,运行然后 boom - 段错误不知从哪里跳到你身上。您开始查看代码,找不到任何东西,执行 make clean && make,问题就消失了。

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

为什么会这样?有什么办法可以预防吗?

最佳答案

如果您更改头文件,则 Makefile 中没有机制来确定哪些源文件包含这些头文件,并且需要重新编译。您可能遇到的一个问题是,如果头文件 A.h 定义了一个类 A,并且您添加、删除或重新排列 A 的成员,则大小类的变化。然而,旧的大小仍在某些源文件中使用,因此当您在堆栈或堆。 make clean 强制传播有关该类的新信息,因为所有源文件都必须重新编译。

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

关于c++ - 完全重建后奇怪的段错误消失了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11042150/

相关文章:

c++ - 使用 WMI 的电池 FullChargeCapacity 返回 0

c++ - OpenCV:如何检查 SparseMat 中是否存在元素

c++ - 无法理解 STL 映射的行为

c++ - 我无法在不违反 C++ 扩展规则的情况下创建匹配的构造函数

c++ - GCC 4.6 和缺少可变参数模板扩展

linux - 使用 BeagleBone Black 读取两个串口时出现 Segmentation Fault 错误

c++ - nullptr 不是一个特殊的关键字和 std::nullptr_t 的对象吗?

c++ - 为什么 g++ 在 ws2_32 中找不到 getnameinfo?

c - Z3 (Haskell) 中的段错误

ubuntu - libpcre.so.3.13.1 中的 php5-fpm 段错误 6