C++中的exit&&abort

void exit(int status);

Terminate calling process

Terminates the process normally, performing the regular cleanup for terminating programs.

Normal program termination performs the following (in the same order):
  1. Objects associated with the current thread with thread storage duration are destroyed (C++11 only).
  2. Objects with static storage duration are destroyed (C++) and functions registered with atexit are called.
  3. All C streams (open with functions in <cstdio>) are closed (and flushed, if buffered), and all files created withtmpfile are removed.
  4. Control is returned to the host environment.

Note that objects with automatic storage are not destroyed by calling exit (C++).

If status is zero or EXIT_SUCCESS, a successful termination status is returned to the host environment.
If status is EXIT_FAILURE, an unsuccessful termination status is returned to the host environment.
Otherwise, the status returned depends on the system and library implementation.

For a similar function that does not perform the cleanup described above, see quick_exit.


void abort(void);

Aborts the current process, producing an abnormal program termination.

The function raises the SIGABRT signal (as if raise(SIGABRT) was called). This, if uncaught, causes the program to terminate returning a platform-dependent unsuccessful termination error code to the host environment.

The program is terminated without destroying any object and without calling any of the functions passed to atexit or at_quick_exit.


結論:C++程序慎用exit和abort,儘量使用return!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章