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