简介该文件包含了数值转换、内存管理、随机数生成、系统交互以及搜索与排序等功能exit()用于正常终止程序当你调用它时程序并不会立即消失而是会执行一系列清理工作当发现由于用户输入错误或缺少文件而无法继续但程序逻辑依然在控制范围内时可以使用 exit()EGif(file NULL) { cout 文件找不到; exit(1); }#include iostream #include cstdlib #include string using namespace std; class Demo { public: string name; Demo(string n) : name(n) { cout 构造 name \n; } ~Demo() { cout 析构 name \n; } }; Demo globalobj(全局对象); int main() { Demo localobj(局部对象); cout 准备调用 exit(0)...\n; exit(0); return 0;//注意有了 exit(0) 这行代码程序就不会执行到 return 0; 这行代码了 }abort()用于立即、异常地终止程序它通常在程序遇到无法挽救的错误如断言失败或严重的内存错误时使用当发现程序内部状态已经损坏继续运行可能会导致更严重后果如损坏数据库时可以使用 abort()EG在 assert() 宏失败时底层通常调用的就是 abort()#include iostream #include cstdlib using namespace std; class Demo { public: Demo() { cout 构造 Demo\n; } ~Demo() { cout 析构 Demo\n; } }; Demo globalobj; int main() { Demo localobj; cout 遇到无法挽回的问题准备调用 abort()...\n; abort(); return 0;//注意有了 abort() 这行代码程序就不会执行到 return 0; 这行代码了 }注意无论是 exit() 还是 abort()都不会调用局部变量的析构函数栈解旋如果你希望确保局部变量被正确清理最好的做法通常是抛出一个异常throw或者使用 return 语句返回 main 函数补充return在 C 中为了保证所有对象的析构函数都能正常运行释放内存、关闭文件、解锁互斥量应尽可能通过return退出main函数如果你在深层函数中发现错误应抛出异常 (throw)如果异常未被捕获C 默认会调用terminate()而其默认行为就是abort()C11 引入了 quick_exit() 它比exit()更快因为它不销毁任何对象无论全局还是局部但依然会刷新某些流。