shared-ptr相关内容

确保向量中的共享指针被正确推回

我可能有一些错误的方面,这确实是我第一次特别处理共享指针. 我正在遍历一棵树.我的树由一个链表组成,带有一个共享指针向量,这些指针表示每个节点的所有子代.为了遍历,我(首先)尝试这样做: //-------------------------------------------------------------- void setupMesh(){ Mesh mesh; ..
发布时间:2020-05-28 21:54:18 C/C++开发

如何使用shared_ptr从外部提供模拟对象?

我想测试一个使用资源Foo的应用程序Thud.它不会拥有具体的对象,但是将具有指向抽象资源接口的指针(此处为IFoo).在生产中,我将为它提供实际的资源实现(FooImpl),而对于单元测试,我想发送一个指向模拟资源的指针.我该怎么办?我试图编写最少的代码只是为了指出要点, class IFoo { public: virtual bool Foo(bool) = 0; }; cl ..
发布时间:2020-05-10 01:42:22 C/C++开发

将内存分配给std :: shared_ptr的正确方法

我实现了一个功能,在该功能中,身份被授予我,而我无法控制.它返回std::shared_ptr.在该函数中,我分配了任意数量的内存,并通过shared_ptr返回对其的访问. 我的内存分配是通过new unsigned char[123]完成的.问题是valgrind检测到new和delete变体的用法之间不匹配.当我使用new[](unsigned)分配内存时,sh ..
发布时间:2020-05-08 22:13:54 C/C++开发

在模块(exe和dll)之间使用STL(TR1)shared_ptr是否安全?

我知道在一个模块中添加某些内容并在另一个模块中删除它通常会在VC ++中引起问题.不同运行时的问题.如果我没记错的话,混合使用静态链接的运行时模块和/或动态链接的版本控制不匹配的模块都可能搞砸. 但是,跨模块使用VC ++ 2008的std :: tr1 :: shared_ptr是否安全? 由于只有一个版本的运行时甚至不知道什么是shared_ptr,因此静态链接是我唯一的危险(目前 ..
发布时间:2020-05-08 21:35:12 C/C++开发

std :: shared_ptr异常安全

我刚刚意识到阅读本页时,std :: shared_ptr的构造函数只有一个指针参数也不例外. 因此,以下代码包含可能的内存泄漏: std::shared_ptr p3 (new int); 原因是可能发生两种分配: 调用构造函数之前的第一个 shared_ptr构造函数中的第二个(例如,在VS 2012中会发生这种情况) 这里有两个问题: 是真的,如 ..
发布时间:2020-05-08 20:48:45 C/C++开发

使用智能指针实现简单的单链接列表

嗨,我正在尝试使用智能指针实现简单的单链接列表,这是到目前为止,我选择使用C ++的shared_ptr,但我读到unique_ptr更适合这种情况,但是,我没有我真的不知道如何遍历列表(即currentNode = currentNode-> next)以到达列表的末尾,以便使用unique_ptr插入元素.这是我到目前为止的代码: template class ..
发布时间:2020-04-30 12:58:01 C/C++开发

是否将shared_ptr的删除器存储在自定义分配器分配的内存中?

说我有一个shared_ptr,带有一个自定义分配器和一个自定义删除器. 我在标准中找不到任何内容讨论删除器的存储位置:它没有说自定义分配器将用于删除器的内存,也没有说它是不会. 这是未指定的,还是我只是缺少一些东西? 解决方案 util.smartptr.shared.const/9在C ++ 11中: 效果:构造一个拥有对象p和删除器d的shared_ptr对象.第二 ..
发布时间:2020-04-27 04:50:09 C/C++开发

智能指针用于C ++ 11中的图形表示(顶点邻居)

假设你有一个包含所有顶点向量的图结构。此外,你有一个结构/类的顶点。这个顶点包含所有邻居的向量(邻接列表)。 我的问题是:我应该使用哪种类型的指针/智能指针来表示这个图? / p> 对于二叉树,我读过,对于父节点,您应该使用原始指针。因为一个节点不拥有它的父节点。二叉树的子节点可以用std :: unique_ptr表示,因为节点拥有子节点的所有权。 但是在一个图中,多个节点可能 ..
发布时间:2018-05-25 17:34:34 其他开发