1 return的作用:释放局部变量(会调用局部对象的析构函数),并弹栈(即释放其所在函数申请的栈),并回到其上级函数。
2 exit的作用:exit 不是系统调用,是glibc对系统调用_exit 或 _exitgroup() 的封装。不做任何清理栈的操作,只返回到操作系统(即结束进程,进程申请的堆栈由操作系统清理)。
3 return 和 exit 在 main 函数中使用:
1: // main 函数结束时也隐式调用 exit 函数,然后清理自身申请的资源。
2: int main()
3: {
4: ....
5: return 0; // 清理当前栈
6: }
7: // 直接返回到系统,系统清理结束的进程资源,其效果同上面形同
8: int main()
9: {
10: .....
11: exit(0); // 不清理当前栈
12: }