C ++ —如何设计数据结构,从而避免内存泄漏[重复]

问题描述

|                                                                                                                   这个问题已经在这里有了答案:                                                      

解决方法

扩展Colin的answer- auto_ptr不能用于容器,因为它不能被复制。您正在寻找的是引用计数的智能指针-共享指针或侵入式指针都可以完成这项工作。 Boost为您提供了几个智能指针-包括shared_ptr和intrusive_ptr。最有可能(根据您的原始问题推断)boost :: shared_ptr是您想要的。     ,像这样: 提升smrtpntr,或者您可以对模板进行专门化处理,以删除其析构函数中的对象,如果不谨慎操作,可能会产生意想不到的后果。     ,正如Colin和MarkD所建议的那样,在使用智能指针矢量的另一面,您也可以使用boost :: ptr_vector