目录

NewArray API Not Paired

使用operator new[]分配的数组内存,使用完毕后,需及时调用operator delete[]进行释放,避免申请的资源无法回收,造成内存泄漏。

规则配置

// rules.json

{
  "rules": {
     "cpp": {
       "ResourceLeak": [
         {
           "ruleId": "NewArray API Not Paired",
           "severity": "error",
           "skip": false
         }
       ]
     }
   }
}

正例

// 正例代码

class MyClass {
public:
    MyClass() {}
    ~MyClass() {}
};
void NewArrayWithDelete()
{
    MyClass *arr = new MyClass[100];
    
    // 使用 arr...
    
    // 正确释放数组内存
    delete[] arr;
    arr = nullptr;
}

反例

// 反例代码

class MyClass {
public:
    MyClass() {}
    ~MyClass() {}
};
void NewArrayWithoutDelete() 
{
    // new[] 分配
    MyClass *arr = new MyClass[100];
    
    // 使用 arr...
    
    // 未释放 - 内存泄漏!
}

Code Scanner代码检查规则的配置指导请参考1.6.3 代码检查工具(codescanner)