Bob*_*lan 18 c++ segmentation-fault
好吧,无论出于何种原因,我都遇到了导致seg故障的问题.我想制作一个,以便我可以使用它gdb来查看如何调试一个.我已经尝试过维基百科文章中的两个例子,但都没有用.
第一个:
char *s = "Hello World!";
*s = 'H';
Run Code Online (Sandbox Code Playgroud)
第二个例子:
int main(void)
{
main();
}
Run Code Online (Sandbox Code Playgroud)
编辑:我正在使用Ubutnu 9.10和g++我的编译器.任何人都可以告诉我一些保证段错误的代码吗?
Mar*_*ork 40
尝试并且可靠地取消引用指针是不可能的.
这是因为应用程序处理内存的方式因编译器和编译器而异,也可能在具有不同选项的相同编译器之间(调试/发布模式不同).
您可以做的是使用信号显式提升段错误:
#include <signal.h>
int main()
{
raise(SIGSEGV);
}
Run Code Online (Sandbox Code Playgroud)
R S*_*hko 18
我的一线风味:
*(char *)0 = 0;
Run Code Online (Sandbox Code Playgroud)
小智 5
你做的两件事都会在C++中产生"未定义的行为"(好吧,实际上是禁止调用main()).无法保证它们会导致seg故障 - 这将取决于很多事情,但主要是您运行的平台,您尚未指定.
事实上,任何引起seg故障的建议方法可能会也可能不会起作用.这是因为seg错误几乎总是与C++的未定义行为概念相关联.