内存管理

领先的::强制在全局范围内查找 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