shared-ptr相关内容

共享指针如何工作?

共享指针如何知道有多少个指针指向该对象? (shared_ptr,在这种情况下) 解决方案 基本上, shared_ptr 指针:指向共享对象的指针和指向包含两个引用计数的结构的指针:一个用于“强引用”,一个用于具有所有权的引用,另一个用于“弱引用”或不具有所有权的引用。 / p> 复制 shared_ptr 时,复制构造函数会增加强引用计数。当销毁一个 shared_ptr 时,析 ..
发布时间:2016-10-13 10:16:01 C/C++开发

我应该通过引用传递shared_ptr吗?

传递shared_ptr的最佳做法是什么? 目前我传递的shared_ptr函数参数如下: void function1(shared_ptr& value); 解决方案 在受控情况下, em>常数参考。确保没有人在同时删除对象,但如果你谨慎对待给予引用的对象,这不应太难。 一般来说,你应该将共享指针作为直接复制传递。这给出了它的意图语义:每个 ..
发布时间:2016-10-13 10:13:09 C/C++开发

shared_ptr和weak_ptr的区别

我正在阅读Scott Meyers的“Effective C ++”一书。它提到有 tr1 :: shared_ptr 和 tr1 :: weak_ptr 像内置指针,但他们跟踪多少 tr1 :: shared_ptrs 指向一个对象。 这被称为引用计数。这在防止非循环数据结构中的资源泄漏方面效果很好,但是如果两个或多个对象包含 tr1 :: shared_ptrs ,使得循环形成,循环可以 ..
发布时间:2016-10-13 10:04:06 C/C++开发

我应该使用shared_ptr或unique_ptr

我一直在使用pimpl成语做一些对象,但我不确定是否使用 std :: shared_ptr 或 std :: unique_ptr 。 我明白 std :: unique_ptr 更高效,但这不是一个问题我,因为这些对象是相对重量无论如何,因此 std :: shared_ptr over std :: unique_ptr 的成本是相对 我目前使用 std :: shared_pt ..
发布时间:2016-10-13 09:47:58 C/C++开发

std :: shared_ptr线程安全

我已读过 多线程可以同时读取和写入不同的 shared_ptr对象,即使对象是共享 所有权的副本。 ( MSDN:标准C ++库中的线程安全) 这是否意味着改变shared_ptr对象是安全的? 对于一个实例, shared_ptr global = make_shared(); ... //在线程1 share ..
发布时间:2016-10-11 23:02:49 C/C++开发

什么时候std :: weak_ptr有用?

我开始学习C ++ 11的智能指针,我没有看到任何有用的使用 std :: weak_ptr 。有人可以告诉我 std :: weak_ptr 是有用还是必要? 解决方案 p>一个很好的例子就是缓存。 对于最近访问的对象,你想把它们保存在内存中,所以你拥有一个强大的指针。定期地,您扫描缓存并确定哪些对象最近未被访问。 但是如果该对象正在使用,而其他一些代码却拥有强大的指针呢?如果 ..
发布时间:2016-10-11 22:50:22 C/C++开发

传递共享指针作为参数

如果我声明一个包含在共享指针中的对象: std :: shared_ptr myClassObject(new myClass()); 然后我想将它作为参数传递给方法: DoSomething(myClassObject); //被调用的方法 void DoSomething(std :: shared_ptr ..
发布时间:2016-10-11 22:24:36 C/C++开发

unique_ptr和shared_ptr之间的差异

可能的重复项: pimpl:shared_ptr或unique_ptr 智能指针(boost)解释 有人能解释shared_ptr和unique_ptr之间的区别吗? / p> 解决方案 这两个类都是智能指针,这意味着它们会在大多数情况下自动释放它们指向的对象当该对象不能再被引用时。 当使用 unique_ptr 时,每个类型的指针可以指向一个资源。 ,最多只能有一 ..
发布时间:2016-10-11 20:42:59 C/C++开发

shared_ptr到数组:应该使用它吗?

只是关于 shared_ptr 的小型查询。 使用 shared_ptr 指向数组是个好习惯吗? 例如 shared_ptr sp(new int [10]); 如果没有,那么任何人都可以告诉我为什么?我已经知道的一个原因是不能增加/减少 shared_ptr 。 解决方案 默认情况下, shared_ptr 将在没有更多引用保留到托管对象上时调用 delete ..
发布时间:2016-10-11 20:27:36 C/C++开发

的Visual Studio 2012的错误C2039:'序列化':是不是成员'的std :: shared_ptr的<&_Ty GT;'

我坚持这个问题,而我编译的静态类库。 我知道,升压不正式支持VS2012但由于这是我目前的开发环境,我真的可以使用一些建议。 我一直在寻找周围,但没有迄今已帮助了我。 样code: foo.h中: 的#include“FooImpl.h” #包括LT&;升压/系列化/ serialization.hpp> #包括LT&;升压/系列化/ shared_ptr.hpp> #包括L ..
发布时间:2016-08-12 19:10:27 C/C++开发

为什么它看起来像的boost :: shared_ptr的结构越来越慢?

我有升压shared_ptr的一个问题。在循环智能指针的初始化时间是在第一次迭代后增加。 第一次迭代需要40毫秒。每隔一个循环大约需要400毫秒。 我不知道为什么会发生。我查了一下,有没有内存泄漏和所有析构函数被调用。有没有人有这种情况的解决方案? PS。然而,当我使用了boost :: ptr_vector,时间没有增加(但仅在调试版本:))。 请参阅例如: A级; TYPEDEF提 ..
发布时间:2016-08-12 19:05:42 C/C++

在循环迭代后共享指针断言失败

我是新来从boost shared_ptr的,并正在考虑遍历我设置,以获得最佳对象。 修改:关于增加信息first_world 的std ::设为<世界:: CPTR> first_world = ... //长调用,但它得到了一组不断共享指针到类的世界里,各种方法存在 TYPEDEF提高:: shared_ptr的<世界常量> CPTR; 世界:: CPTR ..
发布时间:2016-08-12 19:04:48 C/C++开发

通过一个shared_ptr访问calloc'd数据

我试图访​​问我美元,在释放calloc 方法通过一个shared_ptr pviously分配p $的数据。出于某种原因,我不能访问它(保持与 EXC_BAD_ACCESS 崩溃)在 glTexImage2D (我的$的最后一行C $ç段)。 我UTIL方法加载数据: 的shared_ptr<&的ImageData GT; IOSFileSystem :: loadImageFile( ..
发布时间:2016-08-12 19:00:45 C/C++开发

由升压采取限参数make_shared

以下code的一块编译没有问题。在这种情况下我送9参数make_shared 的#include<升压/ shared_ptr.hpp> #包括LT&;升压/ make_shared.hpp> 类控制器 { INT A1,A2,A3,A4,A5,A6,A7,A8,A9; 静态无效的createInstance(INT A1, ..
发布时间:2016-08-12 18:41:55 C/C++开发

如何使用postThreadMessage传递一个struct

我希望使用Windows的消息队列设施,以一个struct发送到另一个线程。 但我发现,在postthreadmessage功能只提供两个整数参数,wParam和lParam我通过arguments.So我决定把该结构的地址lparam中。这是正确的方式使用的窗口传递结构? 和我打算使用boost :: shared_ptr的持有结构的地址,同时在接收线程和发送者线程。我怀疑,当两个share ..
发布时间:2016-08-12 18:35:14 C/C++