【发布时间】:2011-11-25 02:50:06
【问题描述】:
如果我有一个带有私有构造函数和析构函数的类,将经典的 c 样式指针传递给实例(而不是 shared_ptr)是否仍然危险?是否存在内存可能泄漏的情况? 我的程序中实例的生命周期由友元工厂类专门管理(它还使用私有自定义删除器来允许管理器类在内部使用 shared_ptr 对象)。
【问题讨论】:
-
不,一点也不。为什么传递指针会很危险?这就是他们的目的。
shared_ptr无论如何都在内部使用原始指针。并且内存泄漏与构造函数的私有性或公共性无关。 -
@SethCarnegie 我在想,使用公共构造函数,客户端将能够实例化该类,并且传递普通指针而不是 shared_ptr 可能会泄漏内存。对于私有构造函数,这是不可能发生的。
标签: c++ pointers memory-leaks shared-ptr