C C 變數儲存區域

2021-06-19 11:24:49 字數 864 閱讀 8648

乙個由c/c++編譯的程式占用的記憶體分為以下幾個部分

1、棧區(stack)— 程式執行時由編譯器自動分配,存放函式的引數值,區域性變數的值等。

其操作方式類似於資料結構中的棧。

2、堆區(heap) — 在記憶體開闢另一塊儲存區域。

一般由程式設計師分配釋放, 若程式設計師不釋放,程式結束時可能由os** 。

注意它與資料結構中的堆是兩回事,分配方式倒是類似於鍊錶。

3、全域性區(靜態區)(static)—編譯器編譯時即分配記憶體。

全域性變數和靜態變數的儲存是放在一塊的,

初始化的全域性變數和靜態變數在一塊區域,

未初始化的全域性變數和未初始化的靜態變數在相鄰的另一塊區域。 

- 程式結束後由系統釋放

4、文字常量區 —常量字串就是放在這裡的。 程式結束後由系統釋放。

5、程式**區—存放函式體的二進位制**。

注意:靜態區域性變數和靜態全域性變數

屬於靜態儲存方式的量不一定就是靜態變數。 

例如:全域性變數雖屬於靜態儲存方式,但不一定是靜態變數,

必須由 static加以定義後才能成為靜態外部變數,或稱靜態全域性變數。

把區域性變數改變為靜態變數後是改變了它的儲存方式,即改變了它的生存期。

把全域性變數改變為靜態變數後是改變了它的作用域,限制了它的使用範圍。

#includeusing namespace std;

char* func()

int main()

參考文獻:           博主:lonfee88

C C 程式記憶體中變數儲存區域的溫習

四 總結 c語言在記憶體中分為下列幾個區 記憶體棧區 存放區域性變數名 記憶體堆區 存放new或者malloc出來的物件 常數區 存放區域性變數或者全域性變數的值 靜態區 用於存放全域性變數或者靜態變數 區 二進位制 接下來我們用c語言來檢視位址的變化 include include include...

c c 變數記憶體分配區域

乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os 注意它與資料結構中的堆是兩回事,分配方式倒是類...

c c 變數儲存

1 靜態儲存區,是在程式編譯時就已經分配好的,在整個執行期間都存在,如全域性變數 常量。2 棧上分配,函式內的區域性變數就是從這分配的,但分配的記憶體容易有限。3 堆上分配,也稱動態分配,如我們用new,malloc分配記憶體,用delete,free來釋放的記憶體。static全域性變數與普通的全...