C++ new一個數組


C++ new一個數組

一、總結

一句話總結:

A、為了讓new分配一個數組對象,我們需要在類型名之后跟一對方括號,在其中指明要分配的對象的數目。
B、int *p = new int[INT_NUM];//方括號中的數必須是整型,但不必是常量

 

1、c++釋放分配的空間?

delete p;    //p必須指向一個動態分配的對象(或空)
delete [] p;    //p必須指向一個動態分配的數組(或空)

 

 

 

二、C++ new一個數組

轉自或參考:C++new和數組_TYtrack的博客
https://blog.csdn.net/TYtrack/article/details/90639116

 

1. new和delete運算符一次分配/釋放一個對象。

2.為了讓new分配一個數組對象,我們需要在類型名之后跟一對方括號,在其中指明要分配的對象的數目。

    

int *p = new int[INT_NUM];//方括號中的數必須是整型,但不必是常量

3.new T()動態分配一個數組,會得到一個元素類型(T*)的指針。

4.初始化動態分配對象的數組

默認情況下,new分配的對象,不管是單個的還是數組中的,都是默認初始化的。

可以對數組中的元素進行值初始化,方法是在方括號之后跟一對空括號。

  1. int* p = new int[5];    //5個未初始化的int
  2. int* p2 = new int[5]();    //5個初始化為0的int
  3.  
  4. string* ps = new string[5];    //5個空string,string是對象,會調用其構造函數進行默認初始化
  5. 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. 釋放動態數組

  1. delete p;    //p必須指向一個動態分配的對象(或空)
  2. delete [] p;    //p必須指向一個動態分配的數組(或空)


如果在delete一個指向數組的指針時忽略了方括號(或在delete一個指向單一對象的指針時使用了方括號),其行為是未定義的。
數組中的元素按逆序銷毀。

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM