C++官网参考答案:https://cplusplus.com/reference/cstdlib/exit/
函数
<cstdlib>
exit
C
void exit (int status);
C++
[[noreturn]] void exit (int status);
终止调用进程
正常终止进程,为终止程序执行普通清理。
正常的程序终止执行以下操作(以相同的顺序):
与当前线程关联的具有线程存储期的对象将被销毁(仅适用于C++11)。
具有静态存储期的对象将被销毁(C++),并调用在atexit中注册的函数。
所有C流(使用<cstdio>中的函数打开)将被关闭(如果缓冲,将被刷新),使用tmpfile创建的所有文件将被删除。
控制返回到宿主环境。
注意,具有自动存储的对象不会通过调用exit来销毁(C++)。
如果status为0或EXIT_SUCCESS,则向宿主环境返回一个成功的终止状态。
如果status为EXIT_FAILURE,则向宿主环境返回不成功的终止状态。
否则,返回的状态取决于系统和库实现。
对于不执行上述清理的类似函数,请参阅quick_exit。
形参
status
状态码。
如果这是0或EXIT_SUCCESS,则表示成功。
如果是EXIT_FAILURE,则表示失败。
返回值
没有返回值(函数从不返回)。
用例
/* exit example */
#include <stdio.h> /* printf, fopen */
#include <stdlib.h> /* exit, EXIT_FAILURE */
int main ()
{
FILE * pFile;
pFile = fopen ("myfile.txt","r");
if (pFile==NULL)
{
printf ("Error opening file");
exit (EXIT_FAILURE);
}
else
{
/* file operations here */
}
return 0;
}
数据竞争
调用此函数会破坏所有具有静态存储期的对象:运行有多个线程的程序不应该调用exit(有关不影响静态对象的类似函数,请参阅quick_exit)。
异常(C++)
无抛出保证:此函数从不抛出异常。
如果上面描述的程序终止过程抛出异常,则自动调用terminate。