关于c ++:exit(0)vs return 0

exit(0) vs return 0

When exit(0) is used to exit from program, destructors for locally
scoped non-static objects are not called. But destructors are
called if return 0 is used.Note that static objects will be
cleaned up even if we call exit().

这种逻辑背后应该有某种原因。我只想知道是什么?谢谢您。


对于exit( 0 ),您正在调用一个函数。你不要期望调用局部变量的析构函数,如果您正在调用函数。编译器不知道,一个先验的事实是,exit( 0 )有什么特别之处。

事实上,这个原理只适用于C++。例外情况。该标准可以重新定义exit(),以便实现用参数定义了异常,并指定对main的调用被包装在一个try块中,该块捕获此异常,并将返回代码传递回系统。这意味着exit有完全不同的然而,C语言和C++语言中的语义学是不存在的。向委员会提出的做出这一改变的建议。