在大学里,当我们专门学习C++时,我们总是被教导需要释放动态分配的内存,或者使用解构器关闭打开的文件。这和只使用操作系统调用出口(0(有什么区别?只是想知道。
它们不具有可比性。苹果和橙子
exit()
是一个C库函数。Cpp参考告诉我们:
导致正常程序终止。
执行了几个清理步骤:
传递给atexit的
- 函数被调用,调用顺序与注册顺序相反
- 冲洗并关闭所有C流
- tmpfile创建的文件将被删除
解构器是C++特有的特性。它是一个类成员函数,用于在对象超出范围时处理对象的清理。Cpp参考告诉我们:
析构函数是一种特殊的成员函数,在对象的生存期结束时调用。析构函数的目的是释放对象在其生存期内可能获得的资源。
您调用exit()
一次,程序就会结束。同时,析构函数一直在执行。因为对象总是被创建并超出范围。想想局部变量就知道了。或者在复制对象的过程中。