让C++程序崩溃的简便方法
2011-12-19 16:30 咆哮的马甲 阅读(2926) 评论(0) 编辑 收藏 举报今天在stackoverflow上看到有人提问怎样写出最短的代码让c++的程序崩溃,摘抄部分答案分享。
链接:http://stackoverflow.com/questions/8481783/what-is-the-easiest-way-to-make-a-c-program-crash
1. abort()
abort()方法的目的在于使程序非正常退出,它生成一个SIGABRT信号,该信号将导致程序退出并返回给当前程序的运行环境一个unsuccessful termination的错误码。
被abort终结的程序将不会调用全局和静态变量的析构函数,也不会调用atexit()方法中注册的函数。
abort()方法不会返回到调用它的函数或程序。
2. exit (-1);
与abort类似,exit(int status)同样用于终止当前程序的运行,不同之处在于exit(int status)在程序退出之前会执行一些清理工作。
首先,在atexit()方法中注册过的函数将被调用,之后,stream与temporary files将被关闭(删除),全局变量与静态变量的析构方法将被调用,最后控制权将返回给当前程序的运行环境。
status参数将被返回给运行环境,0表示成功,非0的值都表示程序被非正常的终止。
3. raise (SIGABRT);
我们曾经在abort的方式中提到过SIGABRT信号,该信号用于终止当前的程序。发送信号可以使用 int raise (signal sig)方法。
常用的signal见下表,raise方法应该可以满足大多数终止程序运行的需求。
参考资料:
http://stackoverflow.com/questions/8481783/what-is-the-easiest-way-to-make-a-c-program-crash
http://www.cplusplus.com/reference/clibrary/csignal/raise/
http://www.cplusplus.com/reference/clibrary/cstdlib/exit/
http://www.cplusplus.com/reference/clibrary/cstdlib/atexit/
作者:咆哮的马甲
出处:http://www.cnblogs.com/arthurliu/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
转载请保持文档的完整性,严禁用于任何商业用途,否则保留追究法律责任的权利。