exit、_exit、abort、return的区别
转自:http://www.cnblogs.com/fixer/archive/2013/05/14/3078660.html
_exit():
跟exit功能大致相同,区别在于_exit不会清空所有缓冲区,关闭所有I/O通道
exit():
在调用时,会做大部分清理工作,但是决不会销毁局部对象,因为没有stack unwinding。会进行的清理工作包括:销毁所有static和global对象,清空所有缓冲区,关闭所有I/O通道。终止前会调用经由 atexit()登录的函数,atexit如果抛出异常,则调用terminate()。
abort():
调用时,不进行任何清理工作。直接终止程序。
retrun:
调用时,进行stack unwinding,调用局部对象析构函数,清理局部对象。如果在main中,则之后再交由系统调用exit()。
需要注意的是,如果main函数没有写以上的任何调用,则隐式调用return。
测试代码如下:
1 #include<iostream> 2 #include<stdlib.h> 3 4 using std::cout; 5 using std::endl; 6 7 class A 8 { 9 public: 10 A(){} 11 ~A(){cout << "A delete" << endl;} 12 }; 13 14 class B 15 { 16 public: 17 B(){} 18 ~B(){cout << "B delete" << endl;} 19 }; 20 21 int main(int argc, char** argv) 22 { 23 static B testB; 24 A testA; 25 cout << "test code"; //<< endl;//注意此处加不加endl在_exit下的区别 26 _exit(0); 27 //exit(0); 28 //abort(); 29 //return 0; 30 } 31 32
转载于:https://www.cnblogs.com/sjxbg/p/5722304.html
exit、_exit、abort、return的区别相关推荐
- exit(0)与exit(1)return的区别
exit(0):正常运行程序并退出程序: exit(1):非正常运行导致退出程序: return():返回函数,若在主函数中,则会退出函数并返回一值. 详细说: 1. return返回函数值,是关键字 ...
- C语言中exit(0) 、exit(1) 和return的区别
C语言中的exit 文字描述 代码验证 return 表示返回 , 函数返回 exit 表示程序退出 exit(0) 表示正常退出,代码为1 exit(1) 表示异常退出,代码为1 文字描述 retu ...
- 在Linux中,_exit()、exit(0)、exit(1)、和return的区别!!
功能: _exit() :退出程序: exit(0):运行正常退出程序: exit(1):运行异常退出程序: return():返回函数,若在主函数中,则会退出函数并返回值. _exit() 和 ex ...
- C语言exit、abort、return的区别
exit(): 在调用时,会做大部分清理工作,但是决不会销毁局部对象,因为没有stack unwinding. 会进行的清理工作包括:销毁所有static和global对象,清空所有缓冲区,关闭所有I ...
- Linux编程中的坑——C++中exit和return的区别
今天遇到一个坑,折腾了一天才把这个坑填上,情况是这样的: 写了段代码,在main()函数中创建一个分离线程,结果这个线程什么都没干就直接挂掉了,代码长这样: [cpp] view plaincopy ...
- exit()函数详解与Exit() 和 Return() 的区别
exit(0) 表示程序正常, exit(1)/exit(-1)表示程序异常退出 exit() 结束当前进程/当前程序/,在整个程序中,只要调用 exit ,就结束 return() 是当前函数返回, ...
- linux脚本中的exit,Shell中exit和return的区别讲解
1.exit命令 exit命令是Shell内建命令,用于退出当前Shell进程.使用格式如下: exit [] 可以指定退出状态n,n的取值范围是0-255,一般情况下,0表示正常退出,非零表示异常退 ...
- Shell 中 exit 和 return 的区别
1.exit 命令 exit 命令是 Shell 内建命令,用于退出当前 Shell 进程.使用格式如下: exit [N] 可以指定退出状态 N,N 的取值范围是 0-255,一般情况下,0 表示正 ...
- C语言中的exit与return的区别
exit() 结束当前进程/当前程序/,在整个程序中,只要调用 exit ,就结束 exit(0)表示进程正常退出. 返回 0; exit(1)表示进程非正常退出. 返回 1. exit与return ...
最新文章
- 使用Clonezilla克隆系统
- Flash使用域内存api的MD5,速度超快!
- PXE网络装机之centos7(批量自动装机)
- mysql 为游标赋值_mysql 存储过程之游标
- 由点及面,专有云ABC Stack如何护航云平台安全?
- crudandroidandroid——CRUD(在上一篇博客的基础上)
- 利用Javascript的“函数重载”实现自定义Alert样式
- S50 14443卡和15693卡 读写研究
- 一个搜索迷宫出路的程序
- 全民编程时代,程序员该如何保住饭碗?
- 开源SIP服务器加密软件NethidPro升级
- 拓端tecdat|R语言使用ARIMA模型预测股票收益时间序列
- MySQL 中文的乱码问题
- 设置a标签下载文件的文件名
- 华为存储更换故障硬盘
- Redis中SDS简单动态字符串
- 微软输入法和搜狗输入法中的双拼
- python getattrribute_Python学习——面向对象高级之反射
- 什么是软考?软考有什么作用?
- POJ 3984-迷宫问题 (dfs)
热门文章
- Oracle修改globalname,oracle修改global_name和service_name
- 思维导图 源码 php,使用思维导图,优雅的完成自己的代码
- python中的post和get请求的区别_HTTP: Request中的post和get区别
- Arm发布v9体系架构:Cortex-X2、Cortex-A710和Cortex-A510
- python实现whois查询_利用Python实现域名查询和whois查询
- C语言学习笔记---结构体的定义和初始化
- 10折交叉验证(10-fold Cross Validation)与留一法(Leave-One-Out)、分层采样(Stratification)
- windows安装mysql-8.0.12-winx64和Navicat客户端连接(亲测有效)
- sql order by 结合case when then
- Uniform Distribution均匀分布