内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权,还放弃了C++超绝的性能。本期专题将从内存管理、内存泄漏、内存回收这三个方面来探讨C++内存管理问题。
内容预览:
1 内 存管理
1.1 C++内存管理详解
1.1.1 内存分配方式
1.1.1.1 分配方式简介
1.1.1.2 明确区分堆与栈
1.1.1.3 堆和栈究竟有什么区别?
1.1.2 控制C++的内存分配
1.1.2.1 重载全局的new和delete操作符
1.1.2.2 为单个的类重载 new[ ]和delete[ ]
1.1.3 常见的内存错误及其对策
1.1.4 指针与数组的对比
1.1.4.1 修改内容
1.1.4.2 内容复制与比较
1.1.4.3 计算内存容量
1.1.5 指针参数是如何传递内存的?
1.1.6 杜绝“野指针”
1.1.7 有了malloc/free为什么还要new/delete?
1.1.8 内存耗尽怎么办?
1.1.9 malloc/free的使用要点
1.2 C++中的健壮指针和资源管理
1.2.1 第一条规则(RAII)
1.2.2 Smart Pointers
1.2.3 Resource Transfer
1.2.4 Strong Pointers
1.2.5 Parser
1.2.6 Transfer Semantics
1.2.7 Strong Vectors
1.2.8 Code Inspection
1.2.9 共享的所有权
1.2.10 所有权网络
2 内存泄漏
2.1 C++中动态内存分配引发问题的解决方案
2.2 如何对付内存泄漏?
2.3浅谈C/C++内存泄漏及其检测工具
2.3.1 内存泄漏的定义
2.3.2 内存泄漏的发生方式
2.3.3 检测内存泄漏
2.3.3.1 VC下内存泄漏的检测方法
2.3.3.2 使用BoundsChecker检测内存泄漏
2.3.3.3 使用Performance Monitor检测内存泄漏
3 探讨C++内存回收
3.1 C++内存对象大会战
3.1.1 基本概念
3.1.2 三种内存对象的比较
3.1.3 使用栈对象的意外收获
3.1.4 禁止产生堆对象
3.1.5 禁止产生栈对象
3.2 浅议C++ 中的垃圾回收方法
1