【发布时间】:2014-07-15 23:54:45
【问题描述】:
在使用 MinGW 在 GCC 下编译的 C++0x 代码中从 main 返回后,我遇到了分段错误,并将其缩小到简单的情况:
class A {
public:
virtual ~A();
};
A::~A() {
}
const A a;
int main() {
return 0;
}
原因与:
-
const对象前的限定符,删除它会停止 seg 错误, -
class A中缺少构造函数 - 添加空单停止 seg 错误。 - compialtor 版本 - 带有 gcc 4.8.1 的较新 TDM MinGW 不会构建导致 seg 错误的代码。
我是否触发了一些未定义的行为,或者真的是编译器错误是这种行为的原因?
受影响的编译器:
gcc --version gcc.exe (tdm-1) 4.7.1
g++ --version g++.exe (tdm-1) 4.7.1
ld --版本 GNU ld (GNU Binutils) 2.22
【问题讨论】:
-
见this。
-
@yngum:这个限制在 11 之后取消了吗?或者它在最新草稿中的什么位置?
-
@Deduplicator No, 8.5.6 on the latest draft.
-
@Deduplicator 在这种情况下是 8.5§7。
标签: c++ gcc c++11 segmentation-fault mingw