Simple program crashes

自古美人都是妖i 提交于 2020-01-14 07:14:46

问题


So I've been using MinGW GCC version 4.4 or a while, and decided it's time to upgrade. I went to the MinGW website and downloaded the latest version of GCC (4.7.0).

After deleting my previous version, and installing the newest version, even the simplest program will crash. For example, if I compile this program

#include <iostream>

using namespace std;

int main () {
    cout << "Hello, World" << endl;

    return 0;
}

with the command line

g++ hello.cpp -o hello.exe

It will print out "Hello, World" and then crash. However, if I compile it with the following command line:

g++ -O3 hello.cpp -o hello.exe

It will run perfectly fine, without crashing at all.

Now, if I change the input program, and make it slightly more complicated:

#include <iostream>
#include <string>

using namespace std;

int main () {
    string str;

    cout << "Enter a string: ";
    getline (cin, str);

    if (str == "foo")
        cout << "You entered foo!" << endl;
    else
        cout << "You entered: " << str;

    return 0;
}

Without the optimization option (-O3), it will crash before printing out "Enter a string: ", however, with the code optimization line, it crashes after entering a string.

Now, finally to my question. What can I do to fix this, will I simply have to revert to a previous version of GCC in order to use it? Also, why would GCC not be compiling a simple program correctly?


Update: The error was caused by the GCC installation, when installing with the MinGW installer, and choosing the option to "Download latest repository catalogues", it would reproduce the error. However, if I used the same installer and chose "Use pre-packaged repository catalogues", then the error no longer exists. So there is some error in the latest version of the binaries listed in the MinGW GCC catalogues.


回答1:


I've ran into very similar problem, where a release build was fine and a debug build was broken. The solution was to perorm the following:

mingw-get update
mingw-get upgrade
mingw-get install gcc g++ mingw32-make --reinstall

This might have been a double-kill, but at least it even helped when "upgrade" could not remove some previous libraries.



来源:https://stackoverflow.com/questions/11975941/simple-program-crashes

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!