第21章 内存管理
内存管理指程序运行时对内存资源的分配和使用技术。它的目的主要是对内存高效、快速地分配,及时、有效的释放和回收。如果内存使用不当,会带来很多问题,如内存越界、内存泄露等等。C++(www.cppentry.com)之所以长盛不衰,其在内存操作上的强大功能是一个不可忽视的因素。本章将详细讲解C++(www.cppentry.com)中的内存管理功能,本章包括以下内容:
内存的分类;
栈内存的管理;
堆内存的管理。
通过本章的学习,读者将会对信息的存储和处理有一个更加深入的认识,从而可以开发出更高效的代码。
21.1 内存的分类
在C++(www.cppentry.com)程序中,内存可以分为三大类:堆、栈和静态存储区。堆内存由程序动态申请和释放,栈内存和静态存储区则由系统分配和释放。
1.堆(heap)
程序运行时,系统会预留一块供动态分配用的"自由存储区",这块存储区就是堆。堆需要显式分配,分配方法是调用malloc()函数和new运算符,释放时则要调用对应的free()函数和delete运算符。
2.栈(stack)
栈由系统维护的先入先出的内存空间。它常用来保存函数中的临时变量以及函数调用时的现场(指函数返回点,参数等信息),函数执行结束时这些存储单元自动释放。栈不需要显式分配,申请和释放都由系统来维护
3.静态存储区
静态存储区指编译时就确定下来的,用于保存全局变量、常量,以及static修饰的静态变量,这块内存在程序的整个运行期间都存在。这类变量在编译时就确定了所需内存空间的大小,由系统来管理和释放,不需要用户的干预。
【示例21-1】 演示静态内存的使用。
- int x;
- int main(void)
- {
- const int y=100;
- static int z=100;
- int a;
- char b;
- ...
- }
分析:该示例定义了3个变量,其中x是全局变量,y是常量,z是静态变量,它们都将保存在静态存储区。而a和b是临时变量,它们将被保存在栈上。
【责任编辑:
云霞 TEL:(010)68476606】