关于C#:您好世界崩溃的调试版本,取决于优化级别

Debug build of hello world crashes, depending on optimization level

这个简单的hello world程序(从eclipse中获取)在我进行调试构建时退出时崩溃:

1
2
3
4
5
6
7
#include <iostream>
using namespace std;

int main() {
    cout <<"!!!Hello World!!!" << endl; // prints !!!Hello World!!!
    return 0;
}

我用以下方法构建它:

1
2
g++ -O0 -g3 -Wall -c -fmessage-length=0 -o main.o"..\\\\main.cpp"
g++ -o test.exe main.o

当我运行test.exe时,控制台会打开(显示消息),但我还会收到崩溃消息(test.exe停止工作),错误代码为0xc0000005(访问冲突)。现在,如果我使用-O1而不是-O0编译相同的文件,则生成的可执行文件将运行而不会出现问题。我正在运行Windows 8.1(64位),可执行文件是32位,并且我正在使用mingw,g版本为4.8.1。

有人知道什么可能导致此问题吗?


如果在这样一个简单的代码上有问题,则很可能是在此版本的mingw中使用此组编译器密钥的错误。在mingw支持中写此行为可能很有用。