我有一个数据类,我通常使用shared_ptr传递此类的对象。现在,我想尝试跟踪该类对象中存在多少shared_ptr。请注意,这与特定对象的指针数量不同。主要是我希望这有助于识别可能的内存泄漏,但也有一些情况下,知道实际数量是有用的。
我的一个想法是为每个构建的shared_ptr保留一个静态的弱指针列表。然后我可以定期检查有多少弱指针仍然有效。这里的问题是,每次创建shared_ptr时,如何自动向列表添加弱指针?自定义分配器是否有效?
有谁知道合理的方法吗?
答案 0 :(得分:3)
您需要创建一个包装器或工厂,在那里获得所有shared_ptr
,这样您就可以同时进行会计。
template<class T, class... Args>
typename std::shared_ptr<T> make_recorded(Args... ar)
{
std::shared_ptr<T> ptr= make_shared<T>(ar) ;
// add your annotation/tracking here
return ptr ;
}