C++中的動態數組與智能指針


動態數組不是數組!

  將new T[] 分配得到的內存稱為“動態內存”,這種說法其實不准確,使用new分配一個數組時,我們並未得到一個數組類型的對象,而是一個數組元素類型指針,即使用類型別名定義一個數組類型,new也不會分配一個數組類型的對象。

  我們正在分配一個數組的試試生之時不可見的,連[num]都沒有,new返回的是一個元素類型的指針。

  動態分配一個空數組時合法的

    如:    

size_t n = get_size();
int* p = new int[n]; //當n是0的時候也同樣是正確的

  釋放動態數組: delete  []p;

    注意:[]很重要!忽略方括號的delete p是未定義的。因為p指向對象數組首元素,而不是對象。

 

  智能指針和動態數組 

unique_ptr<int []> up(new int[10]); //up指向包含10個位初始化Int的數組
up.release(); //自動調用delete[]銷毀指針

 


免責聲明!

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



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