内存分配

在C++程序中内存分为5个区,分别是栈区、堆区、自由存储区、全局/静态存储区和常量存储区。程序中的各种数据都存储在这些内存区域中。

栈区由编译器自动分配和释放,存放函数的参数以及局部变量,但可使用的总量有限,一般不会超过1M字节。其操作方式类似于数据结构中的栈;
堆区中内存的分配和释放由程序员负责。一般用运算符new分配内存,用运算符delete释放内存。一个new要对应印个delete,否则会导致内存泄露。如果开发者没有释放,在程序结束时操作系统会自动回收。在堆上可分配的内存比栈上大很多。注意它与数据结构的堆是两码事,其分配方式类似于链表;
自由存储区和堆类似,但是其内存管理是通过库函数malloc和free等进行的;
全局/静态存储区中存放的是全局变量和静态变量。该存储区分配的内存在整个程序运行期间一直有效,知道程序结束由系统回收;类的成员方法也是放在此区(全局代码区)(类的成员变量放在堆区)
常量存储区中存放的是常量,通常不允许修改。在程序中定义的常量以及指针字符串都存储在这里。
posted @ 2015-03-11 16:15  sky钦  阅读(94)  评论(0)    收藏  举报