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

不可递归调用析构函数

8.45 ID_this_deleteInDestructor
目录 › next › previous

析构函数开始执行时,对象整体已不存在,再次调用析构函数会导致标准未定义的行为。

示例:

struct A {
    ~A() {
        delete this;  // Non-compliant, undefined behavior
    }
};

在析构函数中调用 delete this 会再次调用析构函数,导致未定义的行为。

相关

ID_recursion

依据

ISO/IEC 14882:2003 3.8(1) ISO/IEC 14882:2003 12.4(14)-undefined ISO/IEC 14882:2011 3.8(1) ISO/IEC 14882:2011 12.4(15)-undefined

参考

CWE-674
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.