我试图使一个Python程序接口与不同的崩溃进程(这是我的手)。不幸的是,我正在使用的程序甚至不会可靠地崩溃!所以我想做一个快速的c++程序,它会故意崩溃,但我不知道最好和最短的方法来做到这一点,有人知道在我的
int main() {
crashyCodeGoesHere();
}
使我的c++程序可靠地崩溃
我试图使一个Python程序接口与不同的崩溃进程(这是我的手)。不幸的是,我正在使用的程序甚至不会可靠地崩溃!所以我想做一个快速的c++程序,它会故意崩溃,但我不知道最好和最短的方法来做到这一点,有人知道在我的
int main() {
crashyCodeGoesHere();
}
使我的c++程序可靠地崩溃
当前回答
*( ( char* ) NULL ) = 0;
这将产生一个分割错误。
其他回答
*( ( char* ) NULL ) = 0;
这将产生一个分割错误。
你可以在c++代码中使用汇编,但是INT 3只适用于x86系统,其他系统可能有其他的陷阱/断点指令。
int main()
{
__asm int 3;
return 0;
}
INT 3导致中断并调用由OS设置的中断向量。
在GCC或clang中使用__builtin_trap(),在MSVC中使用__debugbreak()。不处理这些断点/陷阱将导致未处理的断点异常/崩溃。 使用abort()或exit()的其他建议:这些可能由其他线程处理,使得更难看到传播崩溃的线程的堆栈。
简单的缓冲区溢出代码,将导致程序崩溃
int main()
{
int n[0];
n[2] = 0;
}
死循环递归方法调用导致堆栈溢出怎么办?
#include <windows.h>
#include <stdio.h>
void main()
{
StackOverflow(0);
}
void StackOverflow(int depth)
{
char blockdata[10000];
printf("Overflow: %d\n", depth);
StackOverflow(depth+1);
}
请参阅Microsoft KB上的原始示例