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

Jim*_*Jim 5 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;
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*n B 6

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

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

要做到这一点,编译如下:

g++ -g -o hello hello.cpp
Run Code Online (Sandbox Code Playgroud)

然后运行gdb:

gdb hello
Run Code Online (Sandbox Code Playgroud)

并在gdb提示符下输入

run
Run Code Online (Sandbox Code Playgroud)

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

bt
Run Code Online (Sandbox Code Playgroud)

这会给你一个堆栈跟踪 - 希望 - 帮助你弄清楚发生了什么.

  • @Jim:我添加到g ++命令的"-o hello"选项导致编译器将可执行文件写入名为"hello"的文件(而不是默认的a.out,这通常不是你想要的).编译完成后,使用"gdb hello"启动调试器,然后输入"run"命令运行程序. (2认同)

Vik*_*ehr 0

这可能不太可能,但尝试int main()改变int main(int argc, char *argv[])