記憶體管理
領先的::
強制在全域性範圍內查詢 new 或 delete 運算子,覆蓋任何過載的特定於類的 new 或 delete 運算子。
new
關鍵字後面的可選引數通常用於呼叫 placement new ,但也可用於將其他資訊傳遞給分配器,例如請求從所選池分配記憶體的標記。
分配的型別通常是明確指定的,例如 new Foo
,但也可以寫為 auto
(自 C++ 11 以來)或 decltype(auto)
(自 C++ 14 以來)以從初始化程式中推匯出來。
分配物件的初始化根據與區域性變數初始化相同的規則進行。特別是,如果省略初始化程式 iso,則物件將被預設初始化,並且當動態分配標量型別或標量型別陣列時,無法保證記憶體將被清零。
必須使用 delete[]
銷燬由 new-expression 建立的陣列物件,無論 new-expression 是否使用 []
編寫。例如:
using IA = int[4];
int* pIA = new IA;
delete[] pIA; // right
// delete pIA; // wrong