使用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)