【博客158】exit(0) 与 return 0 并不总是相等的!

风格不统一 提交于 2020-01-30 02:07:23

内容: 在c语言中,exit(0); 和 return 0; 的差异不是特别的明显,但是在C++中是有区别的

exit(0)与return 0 区别:

1.c++中,编译器会将类析构函数的汇编代码插入到return前面,但对exit不作任何变动。return会自动
调用对象的析构函数, 而exit不会

2.exit是系统调用级别的,它表示了一个进程的结束,它将收回进程使用的内存空间,同时把错误信息返回
exit(0)表示程序正常, exit(1)exit(-1)表示程序异常退出,exit(2)表示系统找不到指定的文件。在
整个程序中,只要调用exit就结束。

3.return是语言级别的,它不仅会完成进程的清理工作,同时还会完成语言特定的清理工作,还会配合完成
特定语言的清理动作,比如在return前面插入C++的析构函数的代码

测试实例:

1.使用return则程序结束时会调用析构
在这里插入图片描述
在这里插入图片描述
2.使用exit(0)则程序结束不会调用析构
在这里插入图片描述
在这里插入图片描述
大四学生一枚,文章均非抄袭或者模仿,均为原创,仅代表个人观点,如果文章有错误的地方,欢迎在下方提出,每条评论我都会去认真看并回复,同时感谢指正的前辈。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!