☰
  • 首页
  • 规则分类
  • 项目介绍
search
•••

用 delete 释放数组不可漏写中括号

2.15 ID_insufficientDelete
目录 › next › previous

用 new[] 分配的数组应该用 delete[] 释放,不可漏写中括号,否则会导致标准未定义的行为。

示例:

void foo(int n) {
    auto* p = new X[n];  // n default-constructed X objects
    ....
    delete p;            // Non-compliant, use ‘delete[] p;’ instead
}

在某些环境中,可能只有第一个对象的析构函数被执行,其他对象的析构函数都没有被执行,如果对象与资源分配有关就会导致资源泄漏。

相关

ID_excessiveDelete

依据

ISO/IEC 14882:2003 5.3.5(2)-undefined ISO/IEC 14882:2011 5.3.5(2)-undefined ISO/IEC 14882:2017 8.3.5(2)-undefined

参考

C++ Core Guidelines ES.61
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.