内存分配机制

 C/C++中内存分为如下五个部分:程序员

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

2.堆区:使用malloc或者new出来的对象存放的区域,能够由程序员本身申请和释放。函数

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

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

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

 

其中栈和堆的区别:字符串

1.申请方式:编译器

堆由程序员本身申请释放;it

栈由编译器自动分配。编译

2.申请大小:

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

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

3.申请效率

栈速度较快。

堆分配通常较慢,且容易产生碎片。

相关文章
相关标签/搜索