加载中…
个人资料
xubowhucs
xubowhucs
  • 博客等级:
  • 博客积分:0
  • 博客访问:0
  • 关注人气:0
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C++中的return、exit与abort

(2011-04-23 00:59:15)
标签:

exit

abort

return

杂谈

分类: C

原文地址:http://blog.csdn.net/tangboyun/archive/2010/02/04/5288799.aspx

 

exit():

在调用时,会做大部分清理工作,但是决不会销毁局部对象,因为没有stack unwinding。

会进行的清理工作包括:销毁所有static和global对象,清空所有缓冲区,关闭所有I/O通道。终止前会调用经由atexit()登录的函数,atexit如果抛出异常,则调用terminate()。

abort():

调用时,不进行任何清理工作。直接终止程序。

return:

调用时,进行stack unwinding,调用局部对象析构函数,清理局部对象。如果在main中,则之后再交由系统调用exit()。

示例:

转自:gnu.gcc.help讨论组

 

 

抄袭来源:http://dev.firnow.com/course/6_system/linux/Linuxjs/20100326/201419.html

return返回,可析构 
main或函数中的局部变量,尤其要注意局部对象,如不析构可能造成 
内存泄露。exit返回不析构main或函数中的局部变量,但执行收工函数, 
故可析构全局变量(对象)。abort不析构main或函数中的局部变量,也不 
执行收工函数,故全局和局部对象都不析构。 
    所以,用return更能避免内存泄露,在C++中用abort和exit都不是好 
习惯。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有