【C】C程序内存分配

文章目录

1. C程序内存布局

在这里插入图片描述

从低地址到高地址依次为:

  1. 代码段
    • 存储内容:存放编译后的机器指令
    • 特点:代码段是只读的;可共享,多个进程可共享同一份代码
  2. 数据段
    • 存储内容
      • 已初始化的全局变量
      • 已初始化的静态变量,包括static修饰的局部变量和全局变量
    • 特点:程序启动时加载,生命周期和程序一致;显式初始化
  3. BSS段
    • 存储内容:
      • 未初始化的全局变量
      • 未初始化的静态变量
    • 特点:程序启动时由系统初始化为0/NULL;不占用可执行文件的实际空间(仅记录大小)
  4. 堆区
    • 存储内容:动态分配的内容(如malloc、calloc、realloc申请的内存)
    • 特点:
      • 需要手动管理,如需要显式调用free进行释放
      • 空间大但是分配速度慢
      • 内存碎片为题常见
      • 向高地址增长
  5. 栈区
    • 存储内容
      • 局部变量
      • 函数参数
      • 函数调用的上下文,如返回地址、寄存器状态等
    • 特点
      • 自动管理:进入作用域分配,退出作用域时释放
      • 空间有限,分配速度快
      • 向低地址增长
  6. 内存映射段
    • 存储内容
      • 动态链接库
      • 文件映射,如mmap系统调用
      • 匿名映射,用于大块内存分配
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值