我的公司使用 Parasoft 来验证我们的 c/c++ 程序的正确性。
在源代码中,很多类没有用作基类,也没有虚成员函数。但是它们继承自其他类。这是示例代码:
class class_a : public base{
protected:
int* pa;
public:
class_a();
~class_a(){free(pa);};
int* get_a(){return pa};
...
}
然而,parosoft 说:
析构函数 ~class_a 应该是虚拟的
如果我将析构函数更改为虚拟,违规就会消失。但我认为这不是修复它的正确方法。
那么,这只是虚假的违规信息,还是我们的代码实际上存在一些缺陷?
什么可能导致这种 parasoft 错误?
parasoft 在什么情况下会显示相同的错误信息?
跟进:其中许多类定义了与其基类完全相同的函数。这些函数是非虚拟的。