开发者

Are destructors run when calling exit()? [duplicate]

开发者 https://www.devze.com 2023-03-27 19:01 出处:网络
This question already has answers here: Closed 11 years ago. Possible Duplicate: Will exit() or an exception prevent an end-of-scope destructor from being called?
This question already has answers here: Closed 11 years ago.

Possible Duplicate:

Will exit() or an exception prevent an end-of-scope destructor from being called?

In C+开发者_如何学编程+, when the application calls exit(3) are the destructors on the stack supposed to be run to unwind the stack?


No, most destructors are not run on exit().

C++98 §18.3/8 discusses this.

Essentially, when exit is called static objects are destroyed, atexit handlers are executed, open C streams are flushed and closed, and files created by tmpfile are removed. Local automatic objects are not destroyed. I.e., no stack unwinding.

Calling abort lets even less happen: no cleanup whatsoever.


If your OS is reasonable (Unix, Linux, or a recent Windows), calling exit() tells the kernel to de-allocate all the processes' memory. The stack doesn't need to be unwound; it will simply cease to exist.

0

精彩评论

暂无评论...
验证码 换一张
取 消