return 和 exit

来源:互联网 发布:大数据产业链的构成 编辑:程序博客网 时间:2024/05/11 03:01

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: }
0 0