当前位置: 首页 > news >正文

【C】C程序内存分配

文章目录

  • 1. C程序内存布局

1. C程序内存布局

在这里插入图片描述

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

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

相关文章:

  • 用DeepSeek辅助法律文件起草
  • fme条件属性值
  • 将视频中的音乐传到qq音乐上听
  • 第10章 输入与输出流
  • Redis实现分布式锁的原始方式详解:从入门到实践
  • C++(23):容器类<vector>
  • 聊天的表情包+发小文件+图片操作
  • 《P5283 [十二省联考 2019] 异或粽子》
  • Hugo 安装保姆级教程(搭建个人blog)
  • 软件架构设计--期末复习
  • HiTool机顶盒刷机提示:网络下载TFTP超时,可能的原因如下
  • volatile
  • DeepSeek 赋能太空探索:从轨道优化到星际开拓的 AI 革命
  • DAY 29 复习日:类的装饰器
  • tauri2项目动态添加 Sidecar可行性方案(运行时配置)
  • 高能数造闪耀 CIBF 2025,以创新技术引领新能源智造新征程
  • 基于MCP的AI Agent应用开发实践
  • 【ComfyUI】关于ComfyUI的一些基础知识和入门设置以及快捷键小技巧【简单易懂】
  • 通过串口设备的VID PID动态获取串口号(C# C++)
  • Java基于数组的阻塞队列实现详解
  • 算法-js-柱状图中最大的矩形
  • Qt如何设置图标
  • 【PyQt5实战】五大对话框控件详解:从文件选择到消息弹窗
  • 等于和绝对等于的区别
  • CHAIN-OF-TABLE: 推理链中的演化表格用于表格理解
  • 智慧园区数据大脑管理平台整体解决方案
  • USB学习【11】STM32 USB初始化过程详解
  • 有源晶振与无源晶振 旁路模式与非旁路模式 深度剖析
  • 2009-2025计算机408统考真题及解析
  • 【数据结构与算法】ArrayList 与顺序表的实现