動態數組不是數組!
將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[]銷毀指針