让C++程序崩溃的简便方法

今天在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方法应该可以满足大多数终止程序运行的需求。

让C++程序崩溃的简便方法


参考资料:

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】免费获取数百本计算机经典书籍

    让C++程序崩溃的简便方法

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/38826

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 下午3:27
下一篇 2023年2月8日 下午3:27

相关推荐