我对shared_ptr比较陌生。我正在使用可视化泄漏检测器,当我将以下代码作为内存泄漏时,我在运行时结束时收到错误:
std::shared_ptr<the_type>(new the_type(the_parameter))
我是否必须调用其他类似删除器甚至是shared_ptr::reset()
的东西,它是否会在shared_ptr
实际被删除之前告诉我漏洞或者它正在运行? / p>
感谢。
注意:我使用的是vld 2.2.3,VS2012,Windows 7/8
答案 0 :(得分:1)
以您展示的方式构建共享指针没有任何问题。看起来泄漏探测器报告假泄漏或您正在以错误的方式使用它。作为旁注,请考虑使用std::make_shared
而不是显式new
和共享指针构造函数 - 它通常更有效,更安全。
答案 1 :(得分:0)
如果没有更多代码,很难说,但有一个明显的可能性就是你有一个循环。只是在任何地方使用std::shared_ptr
迟早会导致问题;对于特定情况,它是一个有用的工具,但它无法解决您的所有问题。