C++ new和數組

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 
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章