- 浏览: 461270 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (538)
- C/C++ Primer (69)
- Objective-C Primer (102)
- Python Primer (19)
- JavaScript Primer (1)
- Java Primer (37)
- PHP Primer (17)
- 泛 Linux (37)
- Shell Script (21)
- APUE (21)
- UNP__1&2 (19)
- NetWork (7)
- Oracle周边 (38)
- Mysql里边 (6)
- Windows技 (9)
- 简单算法 & 数据结构 (14)
- 设计模式 (6)
- GTK历程 (12)
- 工具使用 (25)
- 杂事 (23)
- 一些概念 (17)
- Web方面 (10)
- myCodeTools (9)
- ^未 竟$ (13)
- 硬件通信 (2)
- Games (1)
最新评论
原文地址:http://blog.csdn.net/tangboyun/archive/2010/02/04/5288799.aspx
exit():
在调用时,会做大部分清理工作,但是决不会销毁局部对象,因为没有stack unwinding。
会进行的清理工作包括:销毁所有static和global对象,清空所有缓冲区,关闭所有I/O通道。终止前会调用经由atexit()登录的函数,atexit如果抛出异常,则调用terminate()。
abort():
调用时,不进行任何清理工作。直接终止程序。
retrun:
调用时,进行stack unwinding,调用局部对象析构函数,清理局部对象。如果在main中,则之后再交由系统调用exit()。
示例:
抄袭来源:http://dev.firnow.com/course/6_system/linux/Linuxjs/20100326/201419.html
return返回,可析构
main或函数中的局部变量,尤其要注意局部对象,如不析构可能造成
内存泄露。exit返回不析构main或函数中的局部变量,但执行收工函数,
故可析构全局变量(对象)。abort不析构main或函数中的局部变量,也不
执行收工函数,故全局和局部对象都不析构。
所以,用return更能避免内存泄露,在C++中用abort和exit都不是好
习惯。
http://hi.baidu.com/ilotus_y/blog/item/2e1a6339d00e0bf43a87cebb.html
发表评论
-
float equal
2013-05-23 18:21 822- (BOOL)floatA:(float)f1 equalB ... -
C++序列化
2012-07-12 09:51 597http://hi.baidu.com/ewook/item/ ... -
C++著名内裤
2011-12-02 14:00 8131、C++各大有名库的介绍 ... -
C++写C
2011-09-06 17:23 656在C++中写C,标准头文件写法 #ifndef __AB ... -
errno.h
2011-05-05 14:27 698#define EPERM 1 ... -
__cplusplus
2011-04-21 15:09 740http://www.cnblogs.com/stonecra ... -
Pthread__常用
2011-04-21 11:46 854http://blogold.chinaunix.net/u/ ... -
常用预编译
2011-04-21 10:32 658#if defined(WIN32) || defined ... -
C++__容器
2011-04-18 10:16 560http://apps.hi.baidu.com/share/ ... -
C++模板
2011-03-29 14:27 626内容主要来至《钱能C++程序设计教程》&《C++ Pr ... -
交叉引用、前置声明
2011-03-02 09:40 807有两个类相互引用了,编译器报错。 原因是两个类交叉引用: A ... -
typedef的四个用途和两个陷阱
2010-12-14 12:34 657http://hi.baidu.com/changfeng01 ... -
第五届开源小组招新题目
2010-12-03 21:56 752这是学校的开源小组招新题。 08年时我是第二届的组长,不知不觉 ... -
string const char*
2010-12-02 16:13 779http://topic.csdn.net/u/2008092 ... -
CPP Container
2010-11-10 09:20 732延后整理。。。 -
C语言运算符优先级
2010-11-02 17:45 791优先级 运算符 ... -
point point
2010-11-02 17:23 625http://learn.akae.cn/media/ch23 ... -
位运算
2010-11-01 11:33 783千百年来,位运算始终没出现在我写的代码里,今天终于出现了。 ... -
Unix环境下操作特大文件
2010-11-01 11:03 619http://hi.baidu.com/jiangfeng11 ... -
GCC在C语言中内嵌汇编
2010-10-22 14:48 1370http://hi.baidu.com/liu_bin0101 ...
相关推荐
exit()函数与_exit()函数及return关键字的区别: exit()和_exit()函数都可以用于结束进程,不过_exit()调用之后会立即进入内核,而exit()函数会先执行一些清理之后才会进入内核,比如调用各种终止处理程序,关闭...
6. **测试与验证**:为了确保`return-to-abort`策略有效且不会引入新的问题,需要进行充分的测试,包括单元测试、集成测试以及压力测试,确保在各种情况下程序都能正确地响应堆栈溢出。 值得注意的是,`return-to-...
在这个例子中,`exit(EXIT_SUCCESS)` 表示程序正常结束,而 `exit(EXIT_FAILURE)` 表示程序出现错误并需要终止。 **注册退出处理函数** 除了 `exit()` 和 `abort()`,还可以使用 `atexit()` 函数来注册退出处理函数...
### C++编程思想:命名控制与静态成员 在C++编程中,命名控制是一个至关重要的概念,尤其是在处理大型项目时,有效地管理名字空间可以避免命名冲突,提高代码的可读性和可维护性。C++提供了多种机制来控制名字的...
以上这些函数都是在早期的 Turbo C/C++ 和 Borland C++ 编译环境中常用的函数,它们为程序员提供了直接操作系统底层资源的能力,比如文件系统的读写、内存分配等。这些函数对于了解低级别的系统编程是非常有帮助的。
### Turbo C 2.0 和 Borland C++ 库函数...以上就是关于 Turbo C 2.0 和 Borland C++ 库函数中以字母 A 开头的几个函数的详细介绍和示例。这些函数在编写低级系统程序时非常有用,特别是在处理文件系统和内存管理方面。
在IT领域,特别是编程语言与开发工具的历史进程中,Turbo C 2.0 和 Borland C++ 是两个具有里程碑意义的软件。它们不仅为程序员提供了强大的编译环境,还引入了丰富的库函数,极大地简化了软件开发过程。下面将详细...
20.1 老的C++I/O与现代的C++I/O 20.2 C++的流 20.3 C++的流类 20.4格式化的I/O 20.5 重载 第21章 C++文件的输入/输出 21.1 和文件类 21.2 打开和关闭文件 21.3 读写文本文件 21.4 无格式和二进制I/O 21.5 其他get()...
根据提供的文件信息,我们可以归纳出一系列与Turbo C 2.0 和 Borland C++ 相关的重要知识点,包括各种库函数及其用法。以下是对这些知识点的详细解析: ### 1. `abort` 函数 #### 功能: 用于终止程序的执行。 ####...
在C++编程中,异常处理是一项关键的错误处理机制,它允许程序员在程序遇到预期之外的问题时优雅地恢复或关闭程序。本文将深入探讨指定异常(即noexcept关键字)和未经处理的异常,以及它们在C++11及更高版本中的应用...
三是异常处理机制,包括`abort()`、`exit()`和使用`try-catch`结构。 异常的实现机制主要包括以下几点: 1. 异常对象:异常是通过抛出对象来引发的。这些对象根据类型来决定激活哪个处理代码。当异常被抛出后,...
3. 终止程序,如调用`std::abort`或`std::exit`。 如果`new_p`是空指针,处理函数会被重置为默认行为,即抛出`std::bad_alloc`异常。 ### 四、函数返回值 `set_new_handler`函数返回之前设置的处理函数指针。如果...
`abort()` 是C标准库中的一个函数,它的主要功能是异常终止当前正在执行的进程。当你调用 `abort()` 函数时,程序会立即停止执行,不执行任何清理工作,也不返回到调用点。通常,这在程序遇到无法恢复的错误或异常...
在调用 `abort()` 后,程序将不会执行后续的代码,包括 `return` 语句。 示例: ```c #include #include int main() { printf("Calling abort()\n"); abort(); return 0; /* This is never reached */ } ...
8.9 exit()和return有什么不同? . 第9章 数组 9.1 数组的下标总是从0开始吗? 9.2 可以使用数组后面第—个元素的地址吗? 9.3 为什么要小心对待位于数组后面的那些元素的地址呢? 9.4 在把数组作为...