这里只放下一张图,供使用:
C程序映像中内存的空间分布图:
|-----------------------------最高内存地址:0xffff ffff
|-----栈底
|-----栈(编译器自动分配,主要存放函数参数,局部变量)
|-----栈顶
|--------------------------
|
|
|-----NULL(空洞)
|
|
|--------------------------
|
|
|-----堆(由程序员分配,释放)
|
|
|--------------------------
|
|-----未初始化数据------------
| \
|-------------------------- |---统称数据段(存放全局变量,静态变量,字符串常量,由系统释放)
| /
|-----初始化数据--------------
|
|--------------------------
|
|-----正文段(代码段)
|
|-----------------------------最低内存地址:0x0000 0000
在栈上分配一个unsigned char buf[4];数组在栈上布局:
|-----------栈底(高地址)
buf[3]
buf[2]
buf[1]
buf[0]
|-----------栈顶(低地址)
本文详细解读了C程序中内存空间的分布情况,包括栈、堆、初始化与未初始化数据区以及正文段等。重点分析了在栈上分配一个unsignedchar buf[4]数组的具体布局,并通过示意图直观展示。
1万+

被折叠的 条评论
为什么被折叠?



