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):
- Objects associated with the current thread with thread storage duration are destroyed (C++11 only).
- Objects with static storage duration are destroyed (C++) and functions registered with atexit are called.
- All C streams (open with functions in <cstdio>) are closed (and flushed, if buffered), and all files created withtmpfile are removed.
- 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!