2
我使用覆蓋率(5.5.1)(其中包括)來加強我的代碼。我偶然發現了一個問題,現在我懷疑我的掩護設置不完整。看看這個例子:覆蓋率和C++:堆(與新)與堆棧分配
class A
{
int _a,_b;
public:
A(int b) : _a(_b), _b(b)
{ }
};
int main(void)
{
A *a1 = new A(5);
delete a1;
A a2(5);
return 0;
}
正如我使用_b
之後以b
初始化初始化_a
待觀察。在this問題中,我瞭解到編譯器或任何其他工具發出這樣的警告是「很好」。
相反我原來的我現在發現了問題的理解,這實際上Coverity公司發出這完全符合(UNINT)的缺陷,但只有當在棧上分配的,而不是當用new
創建。因此,在我的main
-功能中,我得到了A a2(5)
的警告,但不是A *a1 = new A(5)
。
在我看來,使用new
時,覆蓋範圍正在處理對構造函數的調用與在堆棧上創建對象時的調用不同。
有沒有我在我的遮蓋配置中忽略的東西?我能做些什麼來在堆上分配警告?