功能退出时分段错误的可能原因

dcn*_*dcn 4 c++ debugging gdb segmentation-fault

在C++中退出函数时,您可以考虑哪些可能的原因导致分段错误?我的意思是,我在C++程序中有一个可重现的分段错误,当我调查使用GDB时说

 Program received signal SIGSEGV, Segmentation fault.
 FooBar (bla=...) at foo.cpp:59
 59     }
Run Code Online (Sandbox Code Playgroud)

其中指示的行包含我的函数的结束括号.

Ada*_*eld 5

它很可能是堆栈上某个缓冲区的缓冲区溢出.这会覆盖返回地址,因此当您的代码尝试返回到先前的堆栈帧时,它会跳转到某个随机地址,这很可能不是非可执行地址,因此您会遇到分段错误.

但是,如果没有看到更多关于崩溃的代码或更多信息,就不可能说明确切原因是什么.


ks1*_*322 5

可能有很多原因.在Valgrind下运行程序,很可能它会告诉你确切的原因,或者至少有助于调查和缩小问题范围.