區域性變數和全域性變數在記憶體中的儲存位置

2021-07-02 19:28:52 字數 413 閱讀 9580

靜態儲存方式:是指在程式執行期間分配固定的儲存空間的方式。

動態儲存方式:是在程式執行期間根據需要進行動態的分配儲存空間的方式。

使用者儲存空間可以分為三個部分:

1)       程式區;

2)       靜態儲存區;

3)       動態儲存區;

全域性變數全部存放在靜態儲存區,在程式開始執行時給全域性變數分配儲存區,程式行完畢就釋放。在程式執行過程中它們佔據固定的儲存單元,而不動態地進行分配和釋放;

動態儲存區存放以下資料:

1)       函式形式引數;

2)       自動變數(未加static宣告的區域性變數);

3)       函式呼叫實的現場保護和返回位址;

對以上這些資料,在函式開始呼叫時分配動態儲存空間,函式結束時釋放這些空間。

全域性變數 區域性變數在記憶體中的位置

一般工程編譯完成後會生成.o 檔案 然後通過link 成乙個完整的映象 elf 檔案一般包含 一下幾個 段 file header欄位裡存放了描述整個檔案的基本屬性資訊的內容,如程式入口位址,其他各段資訊 偏移量和範圍 text section 主要是編譯後的原始碼指令,是唯讀字段。data sec...

全域性變數和區域性變數在記憶體中的區別

static函式和普通函式區別作用域記憶體儲存數量 關於變數訪問速度的相關備忘 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等 操作方式類似於資料結構中的棧 2 堆區 heap 由程式設計師分配釋放,如果不釋放可能由os 但區別與資料結構中的堆,其分配方式類似於鍊錶 ...

全域性變數與區域性變數在記憶體中的區別

全域性變數儲存在記憶體的全域性儲存區中,占用靜態的儲存單元 區域性變數儲存在棧中,只有在所在函式被呼叫時才動態地為變數分配儲存單元。該題目考查的知識點是變數的儲存型別及性質。c語言經過編譯之後將記憶體分為以下幾個區域 2 堆 heap 用於程式動態申請分配和釋放空間。c語言中的malloc和free...