最近在看C++标准程序库,看到介绍这两个函数的地方,记起来刚上大学的时候用exit结束
程序。那个时候什么都不懂,程序能运行就行了。不过,也好奇过这些东西,到底有什么区别了。
书上说的很简单,exit会释放static对象(当然包括全局对象,函数static对象,类的static对象),
清空缓冲区,关闭io,然后终止程序(如果atexit有登记函数,那么执行这些函数)。
abort则真的是什么都不干,就退出来了。
以上两者都没有解栈(stack unwinding),也就是栈里面的变量没有析构。这个只有从main函数返回才会正常解栈。
那么,考虑这样的一个问题,既然程序都要结束了,这些操作到底有没有区别了。进程介绍了,
所有的资源都是还给操作系统了吧。只是从程序设计角度来说,资源还是应该由申请者释放的,个人是从这个角度看的。


版权声明:

本作品采用知识共享署名 2.5 中国大陆许可协议进行许可,欢迎转载,但转载请注明来自远行’s Life,并保持转载后文章内容的完整。本人保留所有版权相关权利。

本文链接:http://xiaopengcheng.top/2014/10/31/main函数返回,exit,abort/