堆 | 栈 | |
---|---|---|
创建 | 程序猿创建 | 系统创建 |
回收 | 程序猿回收 | 系统回收 |
存储空间 | 不连续(链表) | 连续(队列) |
地址 | 向高地址扩展 | 向低地址扩展 |
效率 | 低 | 高 |
分配方式 | 动态 | 静态、动态 |
碎片 | 有 | 无 |
一个程序一般分为3段:text段,data段,bss段
text段(__TEXT):程序代码,编译时确定,只读。
data段(__DATA):存放在编译阶段(而非运行时)就能确定的数据,可读可写,即静态存储区,存放被赋初值的全局变量和静态变量、常量。
bss段:存放定义而没有赋初值的全局变量和静态变量。