解释return和exit()的区别
来源:互联网 发布:小米手环数据修改 编辑:程序博客网 时间:2024/05/02 01:40
1.return是C语言提供的,exit是操作系统提供的(或者函数库中给出的)。exit是一个库函数,通常情况:exit(0)表示程序正常,exit(1)和exit(-1)表示程序异常退出,exit(2)表示表示系统找不到指定的文件。在整个程序中,只要调用exit就结束(当前进程或者在main时候为整个程序)。在stdlib.h中exit函数是这样子定义的:void exit(int status)。这个系统调用是用来终止一个进程的,无论在程序中的什么位置,只要执行exit,进程就会从终止进程的运行。
exit(0):正常运行程序并退出程序;
exit(非0):非正常运行导致退出程序;
return():返回函数,若在主函数中,则会退出函数并返回一值。
2.return用于结束一个函数的执行,将函数的执行信息传出给其他调用函数使用;exit函数是退出应用程序,删除进程使用的内存空间,并将应用程序的一个状态返回给OS或其父进程,这个状态标识了应用程序的一些运行信息,这个信息和机器和操作系统有关,一般是
3. return返回函数值并退出函数,是关键字; exit 是一个函数。
4.return是语言级别的,它表示了调用堆栈的返回;return( )是当前函数返回,当然如果是在主函数main, 自然也就结束当前进程了,如果不是,那就是退回上一层调用。在多个进程时。如果有时要检测上个进程是否正常退出。就要用到上个进程的返回值,依次类推。而exit是系统调用级别的,它表示了一个进程的结束。
5. return是函数的退出(返回);exit函数是进程的退出,它退出应用程序,并将应用程序的一个状态返回给OS,这个状态标识了应用程序的一些运行信息。
6.非主函数中调用return和exit效果很明显,但是在main函数中调用return和exit的现象就很模糊,多数情况下现象都是一致的。
intmain(int argc, char **argv, char **envp){ char *p; /* ... */ p = malloc(PAGE_SIZE); /* ... */
不过,实践中这项细微的差异并没有太大的影响,因为最终 exit() 会通知操作系统进程结束,后者会回收属于进程的全部内存页。另一方面,由于 main() 的栈帧已经回收,因此 return 减少了栈空间的需求。
我个人认为,一般情况下应使用 return() 来结束 main(),但如果 main() 中分配了内存,则应使用 exit() 结束(一般来说,除非是多次分配或者系统的内存空间非常紧张,否则 main(),特别是短命程序如命令行工具的 main() 中分配的内存不应使用 free() 释放)。这样做的理由是因为前面所说的技术性内存泄露可能会给内存泄露检测器或静态分析工具带来困扰。
参考:
https://www.zhihu.com/question/30342672/answer/61321168
http://blog.csdn.net/congzhao27/article/details/39273011
http://blog.sina.com.cn/s/blog_5c0153620100dsqb.html
- 解释return和exit()的区别
- Exit() 和 Return() 的区别
- exit()和return()的区别
- return和exit的区别
- return和 exit的区别
- exit()和return()的区别
- exit和return的区别
- return和exit的区别
- exit()和return的区别
- exit和return的区别
- return 和 exit 的区别
- return和exit的区别
- exit和return的区别
- exit()和return的区别:
- exit和return的区别
- exit和return的区别
- exit和return的区别
- exit和return的区别
- 5-2 Windows消息队列 (25分)
- delete与truncate的区别
- linux CentOS 6.5 中安装与配置JDK-7
- 重新注册博客
- 软件性能优化漫谈(一):软件性能测量与分析
- 解释return和exit()的区别
- data
- 目前用到的原型设计工具总结
- git
- 【ARM-Linux开发】Linux链接 -ln
- Log4j配置失效导致spring等框架一直打印DEBUG级别的日志
- 使用KEIL-MDK直接生成bin文件
- 安卓(Android)手机视频采集系统软件
- 采用邻接矩阵实现图的遍历