【发布时间】:2016-11-27 23:15:02
【问题描述】:
在我们的应用程序中,我们即将(终于..)从原始指针切换到使用 C++11 smart_ptr 模板。
我们的应用程序中确实偶尔会出现错误,因为(非 C++)对象仍然保留对我们 C++ 对象的引用,导致过去在访问 then-dealloc'd 对象时崩溃。
不确定这是否是一个愚蠢的问题 - 但有没有办法利用 smart_ptr 对象和 'dump' 在没有预期的情况下仍然持有 C++ 对象的对象再引用一个吗?
我想我要的是在某个时间点列出smart_ptr<MyClass>的所有所有者的方法。
非常感谢任何建议!
【问题讨论】:
-
smart_ptr<>不保留所有者列表,它保留所有者计数。也就是说,您可以立即将所有者列表添加到实现中(在调试中)。 -
您打算如何将非 C++ 代码合并到您的智能指针方案中?
-
@n.m.这是一个使用 Obj-C++ 编写的高级代码的 Cocoa 应用程序。低级业务逻辑独立于平台和 C++,不知道更高级别的非 C++ 代码。话虽如此,从技术上讲,Obj-C++ 是 C++(或超集),尽管只是持有对 C++ 对象的引用
-
在非 C++ 代码中使用 shared_ptr/weak_ptr。
-
不确定 Valgrind 对
shared_ptr有多大帮助,但你试过了吗?
标签: c++ c++11 c++14 shared-ptr smart-pointers