今天在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/
原文链接: https://www.cnblogs.com/arthurliu/archive/2011/12/19/2293554.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/38826
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!