1. new和delete運算符一次分配/釋放一個對象。
2.爲了讓new分配一個數組對象,我們需要在類型名之後跟一對方括號,在其中指明要分配的對象的數目。
int *p = new int[INT_NUM];//方括號中的數必須是整型,但不必是常量
3.new T()動態分配一個數組,會得到一個元素類型(T*)的指針。
4.初始化動態分配對象的數組
默認情況下,new分配的對象,不管是單個的還是數組中的,都是默認初始化的。
可以對數組中的元素進行值初始化,方法是在方括號之後跟一對空括號。
int* p = new int[5]; //5個未初始化的int
int* p2 = new int[5](); //5個初始化爲0的int
string* ps = new string[5]; //5個空string,string是對象,會調用其構造函數進行默認初始化
string* ps2 = new string[5](); //5個空string
在C++11中,還可以提供一個元素初始化器的花括號列表,
int* p3 = new int[5]{0, 1, 2, 3, 4};
string* ps3 = new string[5]{"a", "b", "c"}; //前3個進行列表初始化,後2個進行值初始化(爲空)
如果列表中的個數小於實際元素數目,剩餘的值進行值初始化。
如果列表中的個數大於實際元素數目,則new失敗,不會分配任何內存。
5. 釋放動態數組
delete p; //p必須指向一個動態分配的對象(或空)
delete [] p; //p必須指向一個動態分配的數組(或空)
如果在delete一個指向數組的指針時忽略了方括號(或在delete一個指向單一對象的指針時使用了方括號),其行爲是未定義的。
數組中的元素按逆序銷燬。
---------------------
作者:maybe__god
來源:CSDN
原文:https://blog.csdn.net/u010292561/article/details/77877266
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!