28 April 2023

C++ 核心指南目录

“Avoid new and delete outside resource management functions”

理由

在应用代码中直接调用资源管理函数繁琐且容易出错。

注意

此规则也叫“No naked new”(没有裸露的 new)。

坏例子

void f(int n)
{
    auto p = new X[n];   // n default constructed Xs
    // ...
    delete[] p;
}

在省略出的代码可能导致后面的 delete 再也执行不到。

强化

  • 标记裸露的 newdelete