0

我对 shared_ptr 比较陌生。我正在使用可视泄漏检测器,并且在运行时结束时给我以下代码作为内存泄漏时出现错误:

std::shared_ptr<the_type>(new the_type(the_parameter))

我是否必须调用其他东西,例如删除器,甚至shared_ptr::reset()是视觉泄漏检测器,它告诉我一个错误的泄漏还是它在shared_ptr实际被删除之前正在运行?

谢谢。

注意:我使用 vld 2.2.3、VS2012、Windows 7/8

4

2 回答 2

1

以您显示的方式构造共享指针没有任何问题。看起来检漏仪报告了假泄漏,或者您以错误的方式使用它。作为旁注考虑使用std::make_shared而不是显式new和共享指针构造函数 - 它通常更有效和更安全。

于 2014-08-14T15:37:54.227 回答
0

没有更多代码,很难说,但一个明显的可能性是你有一个循环。随处使用std::shared_ptr迟早会出问题;对于特定情况,它是一个有用的工具,但它并不能解决您的所有问题。

于 2014-08-14T17:49:29.840 回答