[img]
說明:1、程式**區:存放函式體的二進位制**。
2、全域性區資料區:全域性資料區劃分為三個區域。全域性變數和靜態變數的儲存是放在一塊的,初始化的全域性變數和靜態變數在一塊區域, 未初始化的全域性變數和未初始化的靜態變數在相鄰的另一塊區域。常量資料存放在另乙個區域裡。這些資料在程式結束後由系統釋放。我們所說的bss段(bss segment)通常是指用來存放程式中未初始化的全域性變數的一塊記憶體區域。bss是英文block started by symbol的簡稱。這些記憶體的分配位址由低到高,與區域性變數在棧中分配位址的方向不同,棧中位址的分配有高到低。
3、棧區:由編譯器自動分配釋放,存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。區域性變數在棧中位址的分配有高到低。
4、堆區:一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os**。注意它與資料結構中的堆是兩回事,分配方式倒是類似於鍊錶,呵呵。
5、命令列引數區:存放命令列引數和環境變數的值。
例項:
#include
using namespace std;
int p = 1;
int p1 = 2;
int main()
輸出:[color=red]&p 010d9030
&p1 010d9034[/color]
[color=blue]&iv 0023faec
&iv2 0023fae0
&iv3 0023fad4
iv2 3
&reiv 0023fae0
&reiv2 0023faec
&reiv3 0023faec
&pi 0023faa4
&a 0023fa98
pi 0023fa98
*pi=5
&di 0023fa88
pc 0023fa78
*pc= 10
[/color][color=red]&s1 010d9038
&s2 010d903c[/color]
記憶體位址分配
inti 1 intj 1 cout i endl j endl 2 函式引數列表的存放方式是,先對最右邊的形參分配位址,後對最左邊的形參分配位址。3 little endian模式的cpu對運算元的存放方式是從低位元組到高位元組的 0x1234的存放方式入下 0x4000 0x34 0x4001 ...
C語言基礎之 記憶體位址分配
一.記憶體劃分 位址由高到低 1.棧區 棧區的資料以棧的形式進行儲存,特點 先進後出 函式體內存放的區域性變數存放在棧區,由系統分配空間和系統釋放.開發人員不需要關心如何為區域性變數分配空間.int a 10 printf p n a 2.堆區由開發人員手動申請,手動釋放,唯一一塊由開發人員操作的區...
C 記憶體位址分配簡介
1 棧中的變數,其記憶體位址是從高位址到低位址進行分配的 int i 1 int j 1 cout i float pf new float 1.1 cout 2 函式引數列表的存放方式是,先對最右邊的形參分配位址,後對最左邊的形參分配位址。3 little endian模式的cpu對運算元的存放方...