new和delete可以有效地、直接的進行動態內存的分配和釋放。
運算符new返回指定類型的一個指針,如果分配失敗(如沒有足夠的內存空間)時則返回0。
如:
double *p;
p=new double;
*p=30.4;// 將值存放在開辟的單元中
系統自動根據double類型的空間大小開辟內存單元,並將地址放在指針p中。當然,也可在開辟內存單元時對單元裡的值進行初始化。上述代碼等價於:
double *p;
p=new double(30.4);
運算符delete是釋放new請求道的內存。 delete p
將p指針的內存單元釋放,指針變量p仍然有效,它可以重新指向另一個內存單元。
new也可以為數組分配內存,當釋放時,也可以告訴delete數組有多少個。
如:
int *p;
p=new int[10];
delete [10]p;//告訴delete數組有多少個元素,或delete []p;