記憶體管理

領先的::強制在全域性範圍內查詢 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