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 区别相关推荐

  1. c语言exit和return区别,在fork和vfork中使用

    转自c语言exit和return区别,在fork和vfork中使用 exit函数在头文件stdlib.h中. 简述: exit(0):正常运行程序并退出程序: exit(1):非正常运行导致退出程序: ...

  2. linux如何在C程序中使用exit,c语言exit和return区别,在fork和vfork中使用

    exit函数在头文件stdlib.h中. 简述: exit(0):正常运行程序并退出程序: exit(1):非正常运行导致退出程序: return():返回函数,若在main主函数中,则会退出函数并返 ...

  3. c语言exit和return区别

    exit函数在头文件stdlib.h中. exit(0):正常运行程序并退出程序: exit(1):非正常运行导致退出程序: return():返回函数,若在main主函数中,则会退出函数并返回一值, ...

  4. _exit(0) exit(0) exit(1) return区别

    1._exit():和exit()主要区别是一个退出进程会清理I/O缓冲区,一个直接结束进程进入到内核中. 下面我就举个例子说明下吧, int main() { printf("is ok\ ...

  5. exit与return区别

    exit(0):正常运行程序并退出程序: exit(1):非正常运行导致退出程序: return():返回函数,若在主函数中,则会退出函数并返回一值. 详细说: 1. return返回函数值,是关键字 ...

  6. exit和return区别

    From: http://blog.163.com/liuqiang_mail@126/blog/static/109968875201241210473787/ 退出和返回 退出状态(exit st ...

  7. die、exit()和return区别

    die()和exit()都是中止脚本执行函数:其实exit和die这两个名字指向的是同一个函数,die()是exit()函数的别名.该函数只接受一个参数,可以是一个程序返回的数值或是一个字符串,也可以 ...

  8. C语言中_exit()、exit()、return区别

    _exit() --- 直接结束进程进入到内核中 exit() --- 清理I/O缓冲区后再退出进程 return --- 函数返回 下面我就举个例子说明下吧, _exit() #include &l ...

  9. linux脚本中的exit,Shell中exit和return的区别讲解

    1.exit命令 exit命令是Shell内建命令,用于退出当前Shell进程.使用格式如下: exit [] 可以指定退出状态n,n的取值范围是0-255,一般情况下,0表示正常退出,非零表示异常退 ...

最新文章

  1. 如何创建共享文件夹?2009.6.10 三 紧张后 高兴
  2. Android开发中的小技巧
  3. 微服务架构 — 设计原则
  4. Spring3.2新注解@ControllerAdvice
  5. freeBSD时区设置与时间设置
  6. Spring ClassPathXmlApplicationContext
  7. java 设计模式 示例_Java中的策略设计模式-示例教程
  8. cv mat的shape_pybind11—opencv图像处理(numpy数据交换)
  9. 集成学习(西瓜书学习)
  10. 【Jmeter篇】Jmeter分布式调度压测部署
  11. 信息学奥赛C++语言:奖励钢笔
  12. CentOS 最小化安装后安装桌面
  13. 转载-glance的用法
  14. 蓝桥杯 ADV-239 算法提高 P0102
  15. IT餐馆—第一回 前言
  16. cc1 transform链
  17. libiconv_百度百科
  18. 藏在耳机里的小东西——蓝牙天线
  19. matlab中画花瓣,matlab花瓣图的编程原理是什么,向天下大侠求解!!!!给力的? 爱问知识人...
  20. java输出流 拒绝访问_java – 使用FileOutputStream时拒绝访问

热门文章

  1. Android device supports but apk only supports armeabi,x86,x86_64
  2. mysql横竖表转换
  3. 数组转集合问题Arrays.asList()
  4. 关联分析(Apriori,FP-growth)
  5. VCC、VDD、VSS、VDDA、VSSA、VREF+等标识
  6. java飞机大战程序图片不显示
  7. [转] Android开发环境的搭建 Android虚拟机搭建 安卓开发环境搭建
  8. 使用mockserver来进行http接口mock
  9. 如何快速书写文件的相对路径和绝对路径
  10. python中使用“[函数名].[变量名]”声明变量