C程序存儲空間佈局
C程序一直由下列部分組成:
1)正文段——CPU執行的機器指令部分;一個程序只有一個副本;只讀,防止程序由於意外事故而修改自身指令;
2)初始化數據段(數據段)——在程序中所有賦了初值的全局變量,存放在這裡。
3)非初始化數據段(bss段)——在程序中沒有初始化的全局變量;內核將此段初始化為0。
4)棧——增長方向:自頂向下增長;自動變量以及每次函數調用時所需要保存的信息(返回地址;環境信息)。
5)堆——動態存儲分。
|-----------|
| |
|-----------|
| 棧 |
|---------- |
| | |
| \|/ |
| |
| |
| /|\ |
| | |
|----------|
| 堆 |
|-----------|
| 未初始化 |
|-----------|
|初始化 |
|-----------|
|正文段 |
|-----------|