C 基礎筆記(二) 記憶體管理

2021-09-28 16:42:38 字數 1073 閱讀 7425

1.c++程式的記憶體分配格局

分為四個區

記憶體區功能

全域性資料區/靜態區/字元常量區(data area)

全域性變數、靜態資料、常量

**區(code area)

所有類成員函式**、非成員函式**

棧區、堆疊(stack area)

為執行函式而分配的區域性變數、函式引數、返回資料、返回位址

堆區(heap area)

malloc/free或new/delete從堆中分配和釋放記憶體塊

2.堆和棧

-堆:一般堆空間相對其他記憶體空間比較空閒,給程式帶來較大的自由度

-使用堆的情況:直到執行時才能知道需要多少物件空間;不知道物件的生存期有多長;直到執行時才知道乙個物件需要多少記憶體空間

-棧:建立程式時,編譯器能準確的知道棧內儲存的所有資料的長度以及存在時間。棧指標若向下移動,會建立新的記憶體;若向上移,會釋放那些記憶體

3.new和delete(操作堆空間)

只關心申請空間大小,而不需要考慮申請的空間型別

類名 *變數名=new 類名(…)

類名 *變數名=new 類名[元素個數] //建構函式無參的情況下可以申請分配物件陣列

–棧--------------堆----

-堆物件析構是在釋放堆物件語句delete執行之時

delete 變數名;或delete 變數名;

int g_nstumaxnum=20;		//全域性變數初始化區

char *g_pclassname; //全域性變數未初始化區

addstu()

4.修改物件值

-形參為引用

-形參為物件

int main(int argc,char *ar**)

void change1(cpoint &pt)

void change1(cpoint pt)

輸出為100,100 11,11*

C 基礎 記憶體管理篇

記憶體管理是計算機程式設計最為基本的領域之一。在很多指令碼語言中,您不必擔心記憶體是如何管理的,這並不能使得記憶體管理的重要性有一點點降低。對實際程式設計來說,理解您的記憶體管理器的能力與 侷限性至關重要。在大部分系統語言中,比如 c 和 c 您必須進行記憶體管理。本文將介紹手工的 半手工的以及自動...

c基礎之記憶體管理

一 作用域 全域性變數和區域性變數 靜態全域性和區域性變數 總結 型別作用域 生命週期 區域性變數 int a 10 從變數定義到函式結束 區域性變數建立到函式結束 全域性變數 int a 10 整個專案檔案 程式建立到程式結束 static 區域性變數 int a 10 從變數定義到函式結束 程式...

c語言基礎 記憶體管理

1 malloc calloc 分配新的記憶體區域。calloc 在動態分配完記憶體後,自動初始化該記憶體空間為零,而 malloc 不初始化,裡邊資料是隨機的垃圾資料。2 realloc 調整已分配的記憶體區域。先判斷當前的指標是否有足夠的連續空間,如果有,擴大mem address指向的位址,並...