c 中new和delete的使用方法

2021-08-18 17:40:26 字數 1623 閱讀 1580

new和

delete

運算子用於動態分配和撤銷記憶體的運算子

new用法

:1.     開闢單變數位址空間

1)new int;  //開闢乙個存放陣列的儲存空間

,返回乙個指向該儲存空間的位址

.int *a = new int

即為將乙個

int型別的位址賦值給整型指標

a. 2)int *a = new int(5) 作用同上

,但是同時將整數賦值為

52.     開闢陣列空間

一維: int *a = new int[100];

開闢乙個大小為

100的整型陣列空間

二維: int **a = new int[5][6]

三維及其以上

:依此類推

.一般用法

: new

型別 [初值]

delete用法

:1. int *a = new int;

delete a;   //釋放單個

int的空間

2.int *a = new int[5];

delete a; //釋放

int陣列空間

要訪問new

所開闢的結構體空間

,無法直接通過變數名進行

,只能通過賦值的指標進行訪問.用

new和

delete

可以動態開闢

,撤銷位址空間

.在程式設計序時

,若用完乙個變數

(一般是暫時儲存的陣列

),下次需要再用

,但卻又想省去重新初始化的功夫

,可以在每次開始使用時開闢乙個空間

,在用完後撤銷它

.如何用new動態申請二維陣列,然後又如何用

delete

釋放

#define row 100

#define col 200

#define t char (int,float,....) //通用資料型別

t ** ptemp ;

*ptemp = new t[row] ;

for (int i = 0 ; i < col ; i ++)

ptemp[i] = new t[col};

/delete

for (int i =0 ; i < col ; i ++)

delete ptemp[i] ;

delete ptemp ;

以影象為例

分配:int height = value1;//value is used to allocate memory

int width = value2;

lpbyte *lpimage;

lpimage = new lpbyte[height];

for(int i = 0; i < height; i++)

lpimage[i] = new byte[width]

釋放:for(int i = 0; i < height; i++)

delete lpimage[i];

delete lpimage;

這樣應該是對的,只是我沒有加分配記憶體失敗的錯誤處理。

C 中關於new和delete的使用

1.建立動態陣列 陣列型別的變數有三個重要的限制 陣列長度固定不變,在編譯時必須知道它的長度,陣列只在定義它的塊語句中存在。對於動態分配的陣列,雖然長度是固定的,但是動態分配的陣列不必在編譯時知道其長度,可以 通常也是 在執行時才確定陣列長度 同時,動態分配的陣列一直存在直到程式顯示釋放為止,這樣,...

C 中關於new和delete的使用

在c 中,可以使用new和delete動態建立和釋放陣列或者單個物件 1.建立動態陣列 陣列型別的變數有三個重要的限制 陣列長度固定不變,在編譯時必須知道它的長度,陣列只在定義它的塊語句中存在。對於動態分配的陣列,雖然長度是固定的,但是動態分配的陣列不必在編譯時知道其長度,可以 通常也是 在執行時才...

C 中關於new和delete的使用

1.建立動態陣列 陣列型別的變數有三個重要的限制 陣列長度固定不變,在編譯時必須知道它的長度,陣列只在定義它的塊語句中存在。對於動態分配的陣列,雖然長度是固定的,但是動態分配的陣列不必在編譯時知道其長度,可以 通常也是 在執行時才確定陣列長度 同時,動態分配的陣列一直存在直到程式顯示釋放為止,這樣,...