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指向的位址,並...