【发布时间】:2015-11-02 06:57:02
【问题描述】:
似乎将我使用的 gcc 版本从 gcc 4.7.3 更改为 gcc 4.9.2 会导致我的项目出现段错误(在干净的构建和运行之后)。
不幸的是,gdb 在我所在的服务器上坏了
出现此错误,暂时无法使用。 gcc 本身的任何已知变化都可能导致这种情况吗?我怀疑这个问题可能是由双重免费引起的。
【问题讨论】:
-
你试过
valgrind吗? -
很可能,您的代码中有一些 UB,就像猜测的那样,双重免费。不看代码几乎不可能下结论。
-
总而言之,导致这种情况的差异将指针成员添加到类。指针已设置但从未使用。这似乎是一件很奇怪的事情,会导致段错误,所以我认为也许 gcc 正试图为在指针上调用 free 的对象生成一个析构函数。这可能吗?在 4.7 和 4.9 之间生成析构函数的方式是否发生了变化?