原文地址:http://blog.youkuaiyun.com/tangboyun/archive/2010/02/04/5288799.aspx
exit():
在调用时,会做大部分清理工作,但是决不会销毁局部对象,因为没有stack unwinding。
会进行的清理工作包括:销毁所有static和global对象,清空所有缓冲区,关闭所有I/O通道。终止前会调用经由atexit()登录的函数,atexit如果抛出异常,则调用terminate()。
abort():
调用时,不进行任何清理工作。直接终止程序。
retrun:
调用时,进行stack unwinding,调用局部对象析构函数,清理局部对象。如果在main中,则之后再交由系统调用exit()。
示例:
抄袭来源:http://dev.firnow.com/course/6_system/linux/Linuxjs/20100326/201419.html
return返回,可析构
main或函数中的局部变量,尤其要注意局部对象,如不析构可能造成
内存泄露。exit返回不析构main或函数中的局部变量,但执行收工函数,
故可析构全局变量(对象)。abort不析构main或函数中的局部变量,也不
执行收工函数,故全局和局部对象都不析构。
所以,用return更能避免内存泄露,在C++中用abort和exit都不是好
习惯。
http://hi.baidu.com/ilotus_y/blog/item/2e1a6339d00e0bf43a87cebb.html