【发布时间】:2014-10-08 07:55:35
【问题描述】:
我对 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
【问题讨论】:
-
代码在哪里?在函数中?
-
是的,在一个函数中。调用堆栈追溯到我在问题中发布的行。
-
如果是整行(减去分号)并且
the_type的ctor 没有泄漏,则不会有任何泄漏。不过,更喜欢make_shared,它可能更有效(1 个分配而不是 2 个分配)。
标签: c++ c++11 memory-leaks shared-ptr visual-leak-detector