☰
内存管理深入:堆栈的区别
2026/10/7 14:22:58 网站建设 项目流程

337 内存管理深入:堆栈的区别

你可能已经知道C语言有malloc和free来管理内存,但你知道内存其实分很多种吗?你的变量存在哪?函数调用时发生了什么?为什么有的变量函数结束就消失了,有的却一直存在?今天我们来深入理解C语言的内存布局。

一、内存的四个区域

C程序运行时,内存被分成四个主要区域:

高地址 ┌─────────────────┐ │ 栈区(Stack) │ ← 局部变量、函数参数 │ ↓ 向下增长 │ │ │ │ ↑ 向上增长 │ │ 堆区(Heap) │ ← malloc分配的空间 ├─────────────────┤ │ BSS段 │ ← 未初始化的全局/静态变量 ├─────────────────┤ │ 数据段(Data) │ ← 已初始化的全局/静态变量 ├─────────────────┤ │ 代码段(Text) │ ← 程序代码(只读) └─────────────────┘ 低地址

生活比喻:把内存想象成一个大仓库——

  • 代码段:操作手册(只读,不能改)
  • 数据段/BSS段:公共储物柜(全局变量,整个程序都能用)
  • 栈区:临时工作台(函数内的局部变量,用完自动清理)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询