内存分配机制

 C/C++中内存分为以下五个部分:

1.栈区: 存放函数的参数值,局部变量等。由编译器自动分配释放,大小固定,一般为2M或者1M

2.堆区:使用malloc或者new出来的对象存放的区域,可以由程序员自己申请和释放。

3.全局区(静态区):存放全局变量和静态变量。初始化的全局变量和静态变量在一块区域,未初始化的全局变量和静态变量在相邻的另一块区域。

4.常量区:常量字符串等

5.代码区:存放函数体的二进制代码
 

 

其中栈和堆的区别:

1.申请方式:

堆由程序员自己申请释放;

栈由编译器自动分配。

2.申请大小:

堆向高地址扩展,是不连续的内存区域,大小受限于计算机系统中有效的虚拟内存。空间比较灵活也比较大。

栈的容量和栈顶地址由系统预先规定好的,向低地址扩展,大小为2M或者1M,可用空间较小。

3.申请效率

栈速度较快。

堆分配一般较慢,且容易产生碎片。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章