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

How can I tell lint to track a custodial pointer to a vector?

本文关键字:指针 向量 何告诉 lint 跟踪      更新时间:2023-10-16

我有一些代码可以循环和更新一些指针,并将它们存储在向量中:

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

在类析构函数I中,for_each覆盖m_octets,并为每个指针调用析构函数。我认为这一切都很好。它全部编译,单元测试通过。问题是Gimpel的PC lint不喜欢它。它发现"octet"是一个尚未释放的托管指针(警告429)。我当然可以禁用该警告,但手册(11.2.1)指出这是有语义的。我本以为会起作用:

-sem(*push_back, custodial (1))

不幸的是,它没有任何效果。我尝试过各种组合,包括完全指定m_octets.push_back,但似乎都不起作用。对于给定的例子,有人知道这个命令的正确形式吗?

这个对我来说很好:-sem(std::vector::push_back, custodial(1))