C + + 内存管理 内存管理是C+ + 最令人切齿痛恨的问题,也是C+ + 最有争议的问题,C+ + 高手从中获得了更好的性能,更大的自由,C+ + 菜鸟的收获则是一遍一遍的检查代 码和对C+ + 的痛恨,但内存管理在C+ + 中无处不在,内存泄漏几乎在每个C+ + 程序中都会发生,因此要想成为C+ + 高手,内存管理一关是必须要过的,除非 放弃C+ + ,转到Java 或者
NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权,还放弃了C+ + 超绝的性能
本期专题将从内存 管理、内存泄漏、内存回收这三个方面来探讨C+ + 内存管理问题
1 内存管理伟大的 Bill Gates 曾经失言: 640K ought to be enough for everybody — Bill Gates 1981 程序员们经常编写内存管理程序,往往提心吊胆
如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的
本文的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理
1 C++内存管理详解1
1 内存分配方式1
1 分配方式简介 在 C++中,内存分成 5 个区,他们分别是堆、栈、自由存储区、全局/静 态存储区和常量存储区
栈,在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放
栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限
堆,就是那些由 new 分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个 new 就要对应一个 delete
如果程序员没有释 放掉,那么在程序结束后,操作系统会自动回收
自由存储区,就是那些由 malloc 等分配的内存块,他和堆是十分相似的,不过它是用 free 来结束自己的生命的