exit abort return 区别
exit():
在调用时,会做大部分清理工作,但是决不会销毁局部对象,因为没有stack unwinding。
会进行的清理工作包括:销毁所有static和global对象,清空所有缓冲区,关闭所有I/O通道。终止前会调用经由atexit()登录的函数,atexit如果抛出异常,则调用terminate()。
abort():
调用时,不进行任何清理工作。直接终止程序。
retrun:
调用时,进行stack unwinding,调用局部对象析构函数,清理局部对象。如果在main中,则之后再交由系统调用exit()。
return返回,可析构 main或函数中的局部变量,尤其要注意局部对象,如不析构可能造成 内存泄露。
exit返回不析构main或函数中的局部变量,但执行收工函数, 故可析构全局变量(对象)。
abort不析构main或函数中的局部变量,也不 执行收工函数,故全局和局部对象都不析构。
所以,用return更能避免内存泄露,在C++中用abort和exit都不是好
习惯
对于exit函数,可以利用atexit函数为exit事件"挂接"另外的函数,这种"挂接"有点类似Windows编程中的"钩子"(Hook)。程序输出 "atexit挂接的函数"后即终止,即便是不调用exit函数,当程序本身退出时,atexit挂接的函数仍然会被执行。atexit可以被多次执行,并挂接多个函数,这些函数的执行顺序为后挂接的先执行。在Visual C++中,如果以abort函数(此函数不带参数,原型为void abort(void))终止程序,则会在debug模式运行时弹出错误提示的对话框。Linux中abort()会产生core dump。
exit abort return 区别相关推荐
- c语言exit和return区别,在fork和vfork中使用
转自c语言exit和return区别,在fork和vfork中使用 exit函数在头文件stdlib.h中. 简述: exit(0):正常运行程序并退出程序: exit(1):非正常运行导致退出程序: ...
- linux如何在C程序中使用exit,c语言exit和return区别,在fork和vfork中使用
exit函数在头文件stdlib.h中. 简述: exit(0):正常运行程序并退出程序: exit(1):非正常运行导致退出程序: return():返回函数,若在main主函数中,则会退出函数并返 ...
- c语言exit和return区别
exit函数在头文件stdlib.h中. exit(0):正常运行程序并退出程序: exit(1):非正常运行导致退出程序: return():返回函数,若在main主函数中,则会退出函数并返回一值, ...
- _exit(0) exit(0) exit(1) return区别
1._exit():和exit()主要区别是一个退出进程会清理I/O缓冲区,一个直接结束进程进入到内核中. 下面我就举个例子说明下吧, int main() { printf("is ok\ ...
- exit与return区别
exit(0):正常运行程序并退出程序: exit(1):非正常运行导致退出程序: return():返回函数,若在主函数中,则会退出函数并返回一值. 详细说: 1. return返回函数值,是关键字 ...
- exit和return区别
From: http://blog.163.com/liuqiang_mail@126/blog/static/109968875201241210473787/ 退出和返回 退出状态(exit st ...
- die、exit()和return区别
die()和exit()都是中止脚本执行函数:其实exit和die这两个名字指向的是同一个函数,die()是exit()函数的别名.该函数只接受一个参数,可以是一个程序返回的数值或是一个字符串,也可以 ...
- C语言中_exit()、exit()、return区别
_exit() --- 直接结束进程进入到内核中 exit() --- 清理I/O缓冲区后再退出进程 return --- 函数返回 下面我就举个例子说明下吧, _exit() #include &l ...
- linux脚本中的exit,Shell中exit和return的区别讲解
1.exit命令 exit命令是Shell内建命令,用于退出当前Shell进程.使用格式如下: exit [] 可以指定退出状态n,n的取值范围是0-255,一般情况下,0表示正常退出,非零表示异常退 ...
最新文章
- 如何创建共享文件夹?2009.6.10 三 紧张后 高兴
- Android开发中的小技巧
- 微服务架构 — 设计原则
- Spring3.2新注解@ControllerAdvice
- freeBSD时区设置与时间设置
- Spring ClassPathXmlApplicationContext
- java 设计模式 示例_Java中的策略设计模式-示例教程
- cv mat的shape_pybind11—opencv图像处理(numpy数据交换)
- 集成学习(西瓜书学习)
- 【Jmeter篇】Jmeter分布式调度压测部署
- 信息学奥赛C++语言:奖励钢笔
- CentOS 最小化安装后安装桌面
- 转载-glance的用法
- 蓝桥杯 ADV-239 算法提高 P0102
- IT餐馆—第一回 前言
- cc1 transform链
- libiconv_百度百科
- 藏在耳机里的小东西——蓝牙天线
- matlab中画花瓣,matlab花瓣图的编程原理是什么,向天下大侠求解!!!!给力的? 爱问知识人...
- java输出流 拒绝访问_java – 使用FileOutputStream时拒绝访问
热门文章
- Android device supports but apk only supports armeabi,x86,x86_64
- mysql横竖表转换
- 数组转集合问题Arrays.asList()
- 关联分析(Apriori,FP-growth)
- VCC、VDD、VSS、VDDA、VSSA、VREF+等标识
- java飞机大战程序图片不显示
- [转] Android开发环境的搭建 Android虚拟机搭建 安卓开发环境搭建
- 使用mockserver来进行http接口mock
- 如何快速书写文件的相对路径和绝对路径
- python中使用“[函数名].[变量名]”声明变量