New動態分配 Delete 釋放記憶體

2022-03-13 16:22:44 字數 757 閱讀 6631

在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的連續儲存空間。函式的返回值是乙個指向分配空間的起始位置的指標。如果分配空間...