shared-ptr相关内容

我什么时候想从原始指针构造一个共享指针

感谢 std :: make_shared ,我想知道 std :: shared_ptr 的构造函数是否需要任何值,除非与传统/库代码,例如在存储工厂输出时. 还有其他合法用例吗? 避免使用该构造函数是否合理? 甚至扩展了对代码的检查,以在每次使用时都警告程序员? shared_ptr :: reset(T *)是否应使用相同的准则(无论它们是什么)? 关于代码检查:我 ..
发布时间:2021-04-19 21:04:38 C/C++开发

转发声明和shared_ptr

我正在尝试重构代码,以便使用前向声明而不是包含许多标头.我对此并不陌生,并且对boost :: shared_ptr有疑问. 说我有以下界面: #ifndef I_STARTER_H_#定义I_STARTER_H_#includeIStarter类{上市:虚拟〜IStarter(){};虚拟运算符()()= 0;};typedef boost ..
发布时间:2021-04-19 21:00:33 C/C++开发

传递const shared_ptr< T&与仅shared_ptr< T>作为参数

当应用程序中涉及智能指针时,我已经阅读了很多有关性能问题的讨论.常见的建议之一是将智能指针传递为const& amp;.而不是像这样的副本: void doSomething(std :: shared_ptr o){} 与 void doSomething(const std :: shared_ptr& o){} 但是,第二个变体是否真的没有达到共享指针的目的? ..
发布时间:2021-04-19 20:51:20 C/C++开发

通过“所有权"的不同类型更好的shared_ptr.和“参考"?

我想使用类似指针的对象 所有权m_foo 用于拥有对象和句柄 Referencem_someFoo 作为另一个上下文中的经典“指针",而我的 Reference 应该知道何时不再存在原始对象(例如,通过返回nullptr),并且还应该有可能防止原始对象删除(锁定)一小段时间. 我知道 shared_ptr (所有权)和 weak_ptr (参考) ..
发布时间:2021-04-19 20:30:01 C/C++开发

将new_pointer设置为old_pointer + offset的shared_ptr

这是一个智能指针: std :: shared_ptrp(new char [size])表示用原始二进制文件内容填充的数组.在整个数组从文件复制到RAM之后(也只有在此之后),我可以对其进行解析,在此期间,我会检索一些标头信息(一些第一个双字).然后是实际数据. 在不提供更多上下文的情况下,我很方便地将提到的共享指针设置为以实际数据开头的新地址.该地址仍在分配的内存中.但是如 ..
发布时间:2021-04-19 19:54:40 C/C++开发

shared_ptr现实生活中的用例

shared_ptr用于我们希望有一个动态分配项目的多个所有者的场景. 问题是,我无法想象需要多个所有者的任何情况.我可以描绘的每个用例都可以使用unique_ptr来解决. 有人可以提供一个实际的用例示例,其中包含shared_ptr是必需的代码(按要求,我的意思是作为智能指针的最佳选择)?所谓“现实生活",是指一些实际且务实的用例,而不是过于抽象和虚构的用例. 解决方案 在 ..
发布时间:2021-04-19 19:12:42 C/C++开发

使用shared_ptr获得唯一所有权(种类)-这是一种好习惯吗?

这很难解释,但我会尽力而为.因此,我有一个RenderComponent,EventManager和RenderSystem.在我的RenderComponents构造函数中,我引发RenderSystem订阅的renderComponentCreated事件.使用事件args对象,我将一个RenderNode作为数据传递,该数据包含renderSystem绘制事物所需的信息(可绘制,位置和类型) ..
发布时间:2021-04-19 18:54:05 C/C++开发

如何将shared_ptr传递给具有较低生存期的类?

我想优化我的代码.我有一个具有shared_ptr数据成员的类.在此类的某些方法中,我创建了需要使用该成员的对象(只是从shared_ptr指向的对象中获取信息).我知道这些创建的对象的生命周期比我的主类要短.如何传递该指针?我认为不需要另一个shared_ptrs(因为我保证该对象将存在).那么,应该如何创建我创建的类?他们应该得到原始指针吗?Weak_ptr?还是最好的解决方案是获取share ..
发布时间:2021-04-19 18:53:37 C/C++开发

私有构造函数和make_shared

我有一个带有私有构造函数的单例类.在静态工厂方法中,请执行以下操作: shared_ptrMyClass :: GetInstance(){静态的one_flag OnceFlag;call_once(onceFlag,[](){如果(_instance == nullptr)_instance.reset(new MyClass());});返回_instance;} ..
发布时间:2021-04-19 18:43:32 C/C++开发

为什么共享指针分配“交换"?

据我了解,分配共享的ptr时的行为应类似于: a) if(--this-> count == 0){释放this-> count和this-> obj} b) this-> count = r-> count,this-> obj = r-> obj; 助推器只是 shared_ptr&运算符=(shared_ptr const& r)BOOST_NOEXCEPT{this_ ..
发布时间:2021-04-15 20:50:00 C/C++开发

C#中IDisposable对象的共享所有权

C#中是否有提供IDisposable对象共享所有权的类?像C ++中的shared_ptr一样?如果不是,这里的最佳做法是什么? 更新 我正在通过本机lib编写一个c ++/cli包装器.而且我需要释放本机资源(例如, MAPI COM接口,因此我需要确定性的资源释放). 本机部分: //Message.h class Message { ... }; //Messag ..
发布时间:2020-11-26 04:12:20 C#/.NET