new 分配的數據類型:內置數據類型、自定義數據類型。
如果不成功,則 new 將返回零或引發異常;編寫自定義異常處理例程並調用 _set_new_handler運行庫函數(以您的函數名稱作為其參數),可更改此默認行為。
new 為 C++ 類對象分配內存時,將在分配內存后調用對象的構造函數。僅當類具有默認構造函數時,new 運算符才會創建對象的數組。
分配多維數組時,除第一個維度之外的所有維度必須是計算結果為正值的常量表達式;最左側的數組維度可以是計算結果為正值的任何表達式。new 運算符分配數組時,第一個維度可為零 ,此時new 運算符返回一個唯一指針。
例子:分配一個二維數組,然后釋放,數組的大小為 zhm x 10
1、char (*p)[10] = new char[zhm][10]; delete[] p;
2、int m=2,n=3; int **p = new int*[m]; for(int i=0;i<m;i++) p[i] = new int[n]; ... for(int i=0;i<m;i++) delete[] p[i]; delete[] p;
3、如果 2 這樣寫:int **p ; p =new int* [m] ; for(int i=0;i<m;i++) p[i] = new int[n]; 萬萬不可寫成: (*p) =new int [m] ;
變量不能包含 const、volatile、類聲明或枚舉聲明。 非法:volatile char * p = new volatile char[10];
new 運算符不會分配引用類型,因為這些類型不是對象。
new 運算符無法用於分配函數,但可用於分配指向函數的指針。 下面的示例 為 返回整數的函數 分配一個包含 7 個指針的數組,然后釋放。
int (**p)() = new ( int (*[7])() ); delete *p;
