最近在看C++标准程序库,看到介绍这两个函数的地方,记起来刚上大学的时候用exit结束
程序。那个时候什么都不懂,程序能运行就行了。不过,也好奇过这些东西,到底有什么区别了。
书上说的很简单,exit会释放static对象(当然包括全局对象,函数static对象,类的static对象),
清空缓冲区,关闭io,然后终止程序(如果atexit有登记函数,那么执行这些函数)。
abort则真的是什么都不干,就退出来了。
以上两者都没有解栈(stack unwinding),也就是栈里面的变量没有析构。这个只有从main函数返回才会正常解栈。
那么,考虑这样的一个问题,既然程序都要结束了,这些操作到底有没有区别了。进程介绍了,
所有的资源都是还给操作系统了吧。只是从程序设计角度来说,资源还是应该由申请者释放的,个人是从这个角度看的。
main函数返回,exit,abort
- 本文链接: http://xiaopengcheng.top/2014/10/31/main函数返回,exit,abort/
- 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!