为什么我会出现分段错误?

时间:2010-01-25 10:37:58

标签: c++ segmentation-fault

我正在尝试用c ++编译一个简单的hello world函数。编译之后,我运行它并得到“Segmentation fault”。有人可以对此有所了解吗?

我正在使用以下命令从Linux命令行编译它:

  

g ++ hello.cpp

#include <iostream>

using namespace std;

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

4 个答案:

答案 0 :(得分:6)

程序本身看起来不错。我猜你的编译环境中有一些怪癖导致了段错误。

你最好的选择是在调试器(gdb)中运行它 - 它将告诉你崩溃的位置,这将帮助你找出问题所在。

为此,请按以下方式编译:

g++ -g -o hello hello.cpp

然后运行gdb:

gdb hello

并在gdb提示符下输入

run

运行程序。当它崩溃时,输入

bt

将为您提供一个堆栈跟踪,希望能帮助您找出正在发生的事情。

答案 1 :(得分:1)

该代码没有任何问题,因此您必须首先调查您的编译器,然后调查您的硬件。

答案 2 :(得分:1)

像这样编译

g ++ -Bstatic -static hello.cpp

然后运行./a.out

如果这不是故障,LD_LIBRARY_PATH是你的罪魁祸首。

答案 3 :(得分:0)

这可能是一个长镜头,但请尝试将int main()更改为int main(int argc, char *argv[])