程式在記憶體的分布 關鍵字修飾變數

2021-08-15 23:50:24 字數 563 閱讀 4201

存放程式**的一段區域,程式段是唯讀的

存放已經初始化的全域性變數,屬於靜態記憶體分配

bss(block started by symbol)存放程式中未初始化的全域性變數和靜態變數

儲存程序中被動態分配的記憶體

#include 

void *malloc(size_t size);

void

free(void *ptr);

void *calloc(size_t nmemb, size_t size);

void *realloc(void *ptr, size_t size);

儲存程式中臨時建立的區域性變數,函式呼叫,引數入棧,出棧過程也在棧中完成

靜態區域性變數:區域性變數的數值就是上一次呼叫之後的數值

靜態全域性變數:只能在本程式中使用這個全域性變數

不穩定,易變的,使用volatile修飾的變數其數值可能會發生改變

使用場景:

多程序,多執行緒,共享資料

硬體暫存器0x12345678

乙個中斷服務子程式中使用的非自動變數

final關鍵字修飾的變數

final意義 最終的,不可改變的。1 修飾變數,為常量,值不可變 2 修飾物件,值可變,引用不變 3 修飾方法,方法不可重寫 4 修飾類,無子類,不可以被繼承,更不可能被重寫。1.final修飾的基本型別變數必須賦值,但是只能賦值一次 可以在宣告時顯示初始化賦值,或者在構造方法中初始化賦值,或者在...

深刻理解 修飾變數 關鍵字

全域性的變數 全域性的常量 坑如果全域性變數被修飾為全域性常量,那麼也應該應用全域性常量 加const 1 巨集名一般用大寫 2 使用巨集可提高程式的通用性和易讀性,減少不一致性,減少輸入錯誤和便於修改。例如 陣列大小常用巨集定義 3 預處理是在編譯之前的處理,而編譯工作的任務之一就是語法檢查,預處...

final關鍵字修飾變數的幾點思考

final關鍵字修飾變數時,既可以修飾成員變數。又可以修飾區域性變數。若修飾成員變數,必須對變數賦值一次,且只能賦值一次。準確來說應該是初始化一次,儘管在申明成員變數的過程中,系統會預設對變數進行初始化 就個人理解而言,一旦成員變數前加有final修飾符,系統不會對其進行預設初始化 但還必須進行其他...