在c++中,對於變數和物件都是編譯器在編譯時分配好的,對於陣列初始化時,無法確定多少記憶體,很容意造成大開小用的情況。
new 動態分配
一般格式:1. 指標變數名 =new 型別識別符號;
2.指標變數名 =new 型別識別符號(初始值);
3.指標變數名 =new 型別識別符號 [記憶體單元個數]; 開闢陣列的定義方法
new運算子返回的是乙個指向所分配型別變數的指標。
delete 釋放記憶體
一般格式:1.delete p;
2.delete p;
刪除變數p的位址空間,釋放int記憶體。 --堆區(優先佇列) delete p實際意思是刪除p所指向的目標位址,釋放它所佔的記憶體,而非刪除p指標。
對於delete 有兩大問題: 1.記憶體洩露 2.重複釋放
int* p=new int;
delete p;
p=null; //上完廁所洗手的好習慣
析構函式
對於線性表的析構函式
1. int* p;
while(fisrt!=null)
已經釋放了p所指向的first位址,p->next 到底指向什麼了?錯誤!!!
int a=5;
int* p=a;
cout<<*p<
cout<<&p<
cout<
記憶體動態分配與釋放
1 c語言的函式malloc和free 1 函式malloc和free在標頭檔案中的原型及引數 void malloc size t size 動態配置記憶體,大小有size決定,返回值成功時為任意型別指標,失敗時為null。void free void ptr 釋放動態申請的記憶體空間,呼叫fre...
記憶體動態分配與釋放
1 c語言的函式malloc和free 1 函式malloc和free在標頭檔案中的原型及引數 void malloc size t size 動態配置記憶體,大小有size決定,返回值成功時為任意型別指標,失敗時為null。void free void ptr 釋放動態申請的記憶體空間,呼叫fre...
記憶體動態分配與釋放
記憶體的動態分配需要使用函式malloc,函式free和運算子sizeof來實現。函式malloc的原型是 void malloc unsigned int size 函式malloc的作用是在記憶體中分配乙個長度為size的連續儲存空間。函式的返回值是乙個指向分配空間的起始位置的指標。如果分配空間...