C/C++程序内存分配

程序的内存分配

转载链接: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)

堆栈 存放本地变量 即局部变量。在堆栈中,程序通过堆栈的基址和偏移量来访问本地变量。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,174评论 1 32
  • (JG-2014-08-20)(前半部分经过网上多篇文章对比整理)(后半部分根据ExceptionalCpp、C+...
    JasonGao阅读 5,645评论 2 23
  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 7,942评论 0 27
  • 前言 不知道大家有没有这样一种感觉,程序员的数量井喷了。可能是因为互联网火了,也可能是各家培训机构为我们拉来了大量...
    活这么大就没饱过阅读 2,771评论 6 25
  • 第二部分 自动内存管理机制 第二章 java内存异常与内存溢出异常 运行数据区域 程序计数器:当前线程所执行的字节...
    小明oh阅读 1,224评论 0 2