new 分配的數據類型:內置數據類型、自定義數據類型。數組
若是不成功,則 new 將返回零或引起異常;編寫自定義異常處理例程並調用 _set_new_handler運行庫函數(以您的函數名稱做爲其參數),可更改此默認行爲。函數
new 爲 C++ 類對象分配內存時,將在分配內存後調用對象的構造函數。僅當類具備默認構造函數時,new 運算符纔會建立對象的數組。指針
分配多維數組時,除第一個維度以外的全部維度必須是計算結果爲正值的常量表達式;最左側的數組維度能夠是計算結果爲正值的任何表達式。new 運算符分配數組時,第一個維度可爲零 ,此時new 運算符返回一個惟一指針。code
例子:分配一個二維數組,而後釋放,數組的大小爲 zhm
x 10對象
一、char (*p)[10] = new char[zhm][10]; delete[] p; 內存
二、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;get
三、若是 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;