如何告诉lint跟踪向量的保管指针?

时间:2012-08-22 19:20:47

标签: c++ memory-leaks destructor stdvector lint

我有一些代码循环和新闻一些指针并将它们存储在一个向量中:

std::vector<InputBox*> m_octets; 
...  
InputBox* octet = new InputBox(rect, title, touch_num);
m_octets.push_back(octet);

在类析构函数I for_eachm_octets,并为每个指针调用析构函数。我认为这一切都很好。它全部编译并且单元测试通过。问题是Gimpel的PC-lint不喜欢它。它看到`octet'是一个尚未释放的保管指针(警告429)。我当然可以禁用该警告,但手册(11.2.1)表明存在语义。我本以为会工作:

-sem(*push_back, custodial (1))

不幸的是它没有效果。我尝试了各种组合,包括完全指定m_octets.push_back,但似乎没有任何效果。有没有人知道这个命令的正确形式?

1 个答案:

答案 0 :(得分:2)

这个适用于我:-sem(std::vector::push_back, custodial(1))