C++内存管理机制

Posted 张杨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++内存管理机制相关的知识,希望对你有一定的参考价值。

C++中的内存管理

 

1. Linux中程序的内存地址分配

 

 

 

其中上面的地址为高位地址,下面的地址为低位地址。下面分别介绍各个内存区域的作用:

l 代码段:存放函数体的二进制代码;

l Bss段:存放未初始化的全局或静态数据;

l Data段:存放已初始化的全局或静态变量;

堆区:存放动态申请的内存,一般由new和malloc分配;

l 栈区:存放函数运行时的局部变量,函数参数,返回数据,返回地址等。

 

2. 堆和栈

l 栈:在函数调用时,第一个入栈的为该函数执行完毕后的下一条指令的地址,然后是参数,按从右至左入栈,最后是局部变量,这里静态变量不如栈;函数执行完毕后,局部变量先出栈,再是参数,最后是该函数执行完毕后的下一条指令地址。

堆:操作系统中存在一个记录堆中空闲内存的链表,每次动态申请内存时,都会去访问该链表,选择相匹配的内存,同时将多余的内存还回链表,可以知道这样必然会产生碎片,调用delete时,会去访问动态申请的这块内存首地址记录的本次动态分配的内存大小,从而正确的释放当前分配的内存空间。

以上是关于C++内存管理机制的主要内容,如果未能解决你的问题,请参考以下文章

C++内存管理18_总结_从最基础到最复杂

C++内存管理机制学习笔记:replacement new

C++内存管理机制学习笔记:Array new

C++内存管理机制学习笔记:replacement new

C++内存管理机制学习笔记:Array new

C++内存管理机制学习笔记:重载operate new/::operator new..../new()