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

不应抛出指针

7.24 ID_throwPointer
目录 › next › previous

抛出指针会增加不必要的内存管理成本,也容易造成意料之外的错误。

示例:

class E {} e;

void foo() {
    if (cond) {
        throw &e;   // Non-compliant
    } else {
        throw new E;   // Non-compliant
    }
}

void bar() {
    try {
        foo();
    } catch (E* p) {   // ‘p’ should be deleted or not??
        ....
    }
}

例中对捕获的异常指针不论释放还是不释放都有问题,改为抛出对象的方式可有效避免这种问题。

参考

MISRA C++ 2008 15-0-2
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.