问题标签 [weak-ptr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 如何制作 std::weak_ptr 的 c++11 std::unordered_set
我有一套这样的:set<weak_ptr<Node>, owner_less<weak_ptr<Node> > > setName;
它工作正常。但我想将其更改为无序集。但是,当我这样做时,我得到了大约六页的错误。任何想法如何做到这一点?
在浏览了所有错误消息页面后,我发现可能有帮助的行。
c++ - weak_ptr 如何知道共享资源已过期?
考虑以下代码:
考虑到引用的资源基本上已被另一个资源替换,如何weak_ptr
知道它已过期?跟踪什么来确定旧的shared_ptr
共享资源已被销毁并被新的共享资源替换?此类方法的示例定义(如果相关)将不胜感激。weak_ptr
lock
weak_ptr
c++ - 自动从列表中添加和删除对象
我有一堂课。实例化此类时,我希望将实例添加到列表中。删除对象后,我希望将其从列表中删除。
所以我给对象一个指向它自己的共享指针。然后我有一个指向这些共享指针的弱指针列表。当一个对象被创建时,它会创建一个指向自身的共享指针,创建一个指向它的弱指针,并将弱指针放入一个列表中。
当对象被销毁时,共享指针也被销毁。每当我尝试访问列表中的成员时,我都会确保它没有过期并且它的使用计数不为 0。尽管如此,当列表成员被销毁时,我仍然会崩溃。为什么?我可以绕过它吗?这是我的SSCCE:
该程序的输出如下:
c++ - boost range weak_ptr
I have a map where the value is a weak pointer. This works: While I can write this:
I'd much rather have a new range that transforms to a locked shared pointer. Something like this:
however, I've been unable to figure out what that transform should look like; or if it should even be a transform.
Does anyone have an idea? I'm convinced this pattern may quite common.
boost - 提升 shared_ptr 循环参考?
来自 boost::shared_ptr 的 boost 文档:
因为实现使用引用计数,shared_ptr 实例的循环不会被回收。例如,如果 main() 持有一个 shared_ptr 给 A,它直接或间接持有一个 shared_ptr 回 A,A 的使用计数将为 2。原始 shared_ptr 的破坏将使 A 悬空,使用计数为 1。使用 weak_ptr 来“打破循环。”
我无法理解这一段,您能否提供这种情况的最小示例并解释后果。
c++ - 原始指针和weak_ptr有什么区别?
如标题。这个问题可能已经有了答案,但我没有找到答案。
c++ - MVC std::shared_ptr 中的循环依赖
我正在尝试为我的项目创建这个 MVC 结构。我第一次使用 shared_ptr 和 weak_ptr 并且除了循环依赖之外也遇到了很多问题。
模型是可观察的。视图是观察者。
我的输出是:
这表明它在某处挂断,然后在 50 秒后终止,没有其他输出。
控制器没有被破坏。:(
我该如何解决这个问题?
c++ - 多线程 C++ 中的 std::weak_ptr.lock 语义
标准 说:
回报:
但是在过期返回false(对象仍然存在)和shared_ptr的构造之间,另一个线程可以删除最后一个强引用,从而引发意外异常?如何防止这种情况?
还是我错过了什么?
c++ - 为什么这个 time_zone_ptr 示例不包含内存泄漏?
我在这里阅读了 boost DateTime 库,其中包含很多示例,例如:
我很好奇为什么使用关键字“new”不会导致内存泄漏?我研究了 boost 源代码,发现它有两个不同版本的构造函数,一个带有 shared_ptr,另一个使用 weak_ptr。有人可以解释这些是如何工作的,以及为什么上面的行可以安全写吗?
c++ - 使用智能指针的 C++ 中的“观察者模式”?
那里的专业人士,
这是我第一次真正向这个委员会发布一个过去对我有很大帮助的问题。我仍然是一个编程新手,在过去的几个月里一直在努力学习很多关于编程和软件开发的知识。
我最近处理了“c++11-Smart Pointers”这个话题,并决定重写我几周前学到的所有设计模式,包括使用 shared_ptr 和weak_ptr 进行资源管理的“观察者模式”。
当我尝试编写观察者模式的简单实现时(如 Head First 的设计模式或 E.Gamma 的设计模式),对可观察对象和观察者都使用接口类,并且每个对象都使用一个具体类,我收到了来自 Visual Studio 的各种错误消息。我只是不明白如何在这种模式下组合 shared_ptr 和 weak_ptr ,这可能是由于我仍然没有完全理解两者的组合。
不幸的是,即使在 Internet 上进行彻底的搜索,也没有为我提供一个可以作为我方向的“使用智能指针的观察者模式”的简单示例。
因此,我想知道,你们中的某个人是否会知道在哪里可以找到这样一个简单的实现,或者好心地为我提供你们自己的一个。两者都会非常有帮助:-)
非常感谢
编码器安迪