C/C++程序内存分配
2019-06-01 本文已影响0人
被使用了吧
程序的内存分配
转载链接:https://blog.csdn.net/LG1259156776/article/details/52627565
https://blog.csdn.net/k346k346/article/details/45592329
Linux程序内存分布├———————┤低端内存区域
│ …… │
├———————┤
│ 动态数据区 │
├———————┤
│ …… │
├———————┤
│ 代码区 │
├———————┤
│ 静态数据区 │
├———————┤
│ …… │
├———————┤高端内存区域
由C/C++编译的程序占用的内存分为以下几个部分 :
1、堆区(heap):分配方式类似于链表;一般由程序员分配和释放,若程序员不释放,OS可能回收。分配方法:malloc、new ;释放方法:free delete。
2、栈区(stack):编译器自动分配释放,存放函数参数值、局部变量的值。操作方式类似于:数据结构的栈。 进程的每个线程都有私有的栈
3、全局区(静态区)(static):全局变量和静态变量的存储位置,由系统分配和释放。初始化的存放于.data,未初始化的在.bss。 默认初始化为0
4、文字常量区:由系统释放;存放于.rodata
5、程序代码区:存放函数体的二进制代码(.text)
堆栈 存放本地变量 即局部变量。在堆栈中,程序通过堆栈的基址和偏移量来访问本地变量。