c++ - 查找由智能指针引起的内存泄漏

c++ - 查找由智能指针引起的内存泄漏

有人知道一个“技巧”,发现由智能指针引起的内存泄漏吗? 我目前正在使用C++编写的大型项目,大量使用智能指针和引用计数。 很明显,我们有一些由智能指针引起的内存泄漏,这些指针在代码中仍然被引用,所以它们的内存不会被释放。 很难找到带有“不必要的”引用的代码行,导致相应的对象不被释放(尽管它不再使用)。 我在网上找到了一些建议,建议收集引用计数器的增量/减量操作的调用堆栈。 这给了我一个很好的…


c++ - 智能指针:或谁拥有你的宝贝?

C++全是关于内存所有权的 又名“ 所有权语义 ” 一块动态分配的内存的所有者负责释放该内存。 所以这个问题真的变成谁拥有记忆。 在C++中,所有权由一个RAW指针包装在内部的类型记录,因此在一个好的(IMO)C++程序中,很少见到RAW RAW指针传递过来(因为RAW指针没有推断的所有权,所以我们不能告诉谁拥有记忆,因此如果没有仔细阅读文件,你不能分辨谁对所有权负责)。 相反,…


c++ - 什么是智能指针,我应该什么时候使用它?

什么是智能指针,我应该什么时候使用它?…


c++ - 为什么不应该使用对智能指针的引用?

我记得在某处使用对智能指针的引用会导致内存损坏。 这是否仅仅是因为在智能指针被销毁之后使用了智能指针的引用呢? 还是引用计数搞砸了? 谢谢澄清…


c++ - 习惯用std:: auto_ptr还是只使用shared_ptr?

现在shared_ptr在tr1中,你认为使用std::auto_ptr怎样? 它们都有不同的用例,但是auto_ptr所有用例也可以用shared_ptr来解决。 你会放弃auto_ptr或继续使用它的情况下,你想明确表示只有一个类拥有所有权在任何给定的点? 我的看法是,使用auto_ptr可以增加代码的清晰度,正好通过添加细微差别和代码设计的指示,但另一方面,在培养新的程序员时又增加了一个微…


最好是返回一个C++的参考或weak_ptr?

假设我有一个类,我希望用户能够引用我的一个成员。 哪个是首选? class Member; class ClassWithWeakPtr{private: boost::shared_ptr<Member>_member; public: boost::weak_ptr<Member> GetMember();}; 要么 class Member; class Clas…


c++ - 用new char[n]来使用auto_ptr是错误的

如果我声明一个临时自动删除的字符缓冲区使用 std::auto_ptr<char> buffer(new char[n]); 那么当缓冲区超出范围时,缓冲区会被自动删除。 我会假设使用删除删除缓冲区。 但是,缓冲区是使用new[]创建的,因此严格地说应该使用delete[]删除缓冲区。 有什么可能性,这种不匹配可能会导致内存泄漏?…



C++能不能解决这个pimpl习语呢?

据我所知,pimpl成语只是因为C++迫使你把所有的私有类成员放在头里。 如果头只包含公共接口,理论上,类实现的任何改变都不需要重新编译程序的其余部分。 我想知道的是为什么C++没有被设计为允许这样的方便。 为什么要求一个班级的私人部分公开地显示在标题中(没有双关语意思)?…


c++ - std:: auto_ptr或boost:: shared_ptr的pImpl成语?

当使用pImpl习语时,最好使用boost:shared_ptr而不是std::auto_ptr ? 我确信我曾经读过升压版本更友好? class Foo{public: Foo(); private: struct impl; std::auto_ptr<impl> impl_;}; class Foo{public: Foo(); private:…


c++ - BSTR和_bstr_t有什么区别?

任何人都可以解释上面提到的类型和一些示例用法之间的区别,以清楚地解释两者之间的区别吗? 任何帮助将不胜感激! 注:这个问题是从另外一个问题中分离出来的…




shared_ptr reset get release std move make_unique deleter unique_ptr赋值 弱指针