shared-ptr相关内容

为什么allocate_shared和make_shared这么慢

我刚刚编写了一个测试程序,以找到最快的分配方法。释放许多由 shared_ptr 管理的对象。 我尝试了 shared_ptr 使用新, shared_ptr 和 pool , make_shared , allocate_shared 。让我感到惊讶的是, allocate_shared 比 pool shared_ptr 慢>。 我使用发布版本在 vs2017 + win10 中测 ..
发布时间:2020-09-27 21:11:58 C/C++开发

空别名shared_ptr是否可以代替无操作删除shared_ptr?

有时候,我需要具有无操作删除程序的 shared_ptr 实例,因为API希望使用 shared_ptr 实例,它想存储一段有限的时间,但是我得到了一个原始指针,不允许我拥有比运行时间更长的时间。 在这种情况下,我一直在使用无操作删除器,例如 [](const void *){} ,但是今天我发现,还有另一种选择,使用(或滥用?)别名为 shared_ptr 的构造函数: void ..
发布时间:2020-09-27 20:45:08 C/C++开发

在模板化类中使用shared_from_this

我有一个资源管理器,就像《现代C ++设计》一书中提出的Andrei Alexandrescu一样,它遵循基于策略的设计。不过,我遇到了麻烦,因为我的资源管理器需要能够通过 shared_from_this()为托管资源提供对自身的引用。 我建立了一个重现我的问题的最小示例,结果您可以在此处看到。 > 基本上,我有一些托管资源需要引用其管理器: 模板 ..
发布时间:2020-09-27 20:24:40 C/C++开发

std :: shared_ptr:reset()与分配

这是一个基本问题,但是我没有找到有关它的先前文章。以下问题的标题听起来可能与我的问题相同,但问题本身与标题不匹配: 我很困惑 std :: shared_ptr 的 reset()成员函数的目的:除了赋值外,它还有什么作用 具体来说,给定定义: auto p = std :: make_shared(1); 以下两行等效: p ..
发布时间:2020-09-27 20:19:25 C/C++开发

安全,异步地使用C ++ 11 lambda

我是从Objective-C的背景来学习C ++ 11的,而我正在努力解决的一件事是C ++ 11 lambda与Object-C“块”的不同捕获语义。 (请参见此处比较)。 在Objective-C中,像C ++一样,自身 / 指针。但是由于Objective-C中的所有对象实际上都是“共享指针”,因此要使用C ++术语,您可以这样做: doSomethingAsynchronou ..
发布时间:2020-09-27 20:08:35 C/C++开发

shared_ptr< T []>的问题;包装动态数组

我想用 std :: shared_ptr 替换班级中的一些原始指针,以便在创建该类的副本时不必担心。但是原始指针指向动态数组。当您给它提供自定义删除器(例如,things)时,可以将shared_ptr与动态数组一起使用。 default_delete 。 但是一旦我尝试分配,我就会得到一个很大的错误列表 这是一个最小的代码示例: #include ..
发布时间:2020-09-27 19:21:09 C/C++开发

为继承enable_shared_from_this的类获取unique_ptr

通常,我更喜欢从工厂返回 unique_ptr 。 最近,我遇到了一个问题,即为继承 enable_shared_from_this 的类返回 unique_ptr 。此类的用户可能会意外地调用 shared_from_this(),尽管该调用不属于任何 shared_ptr ,结果带有 std :: bad_weak_ptr 异常(或直到C ++ 17之前未定义的行为,通常作为异常来实现)。 ..
发布时间:2020-09-27 19:05:19 C/C++开发

std :: shared_ptr深层复制对象

在C ++ 11上找不到很多,只能在增强上使用。 请考虑以下课程: 类状态 { std :: shared_ptr _图形; public: State(const State& state) { //这是赋值,因此指向同一对象 this-> _graph = std :: make_shared(state._graph); ..
发布时间:2020-09-27 18:50:01 其他开发

为类成员使用智能指针

我无法理解C ++ 11中智能指针作为类成员的用法。我已经阅读了很多有关智能指针的文章,我想我确实理解 unique_ptr 和 shared_ptr / weak_ptr 通常可以正常工作。我不了解实际用途。似乎每个人都建议使用 unique_ptr 作为几乎所有时间的方式。但是我将如何实现这样的东西: class Device { }; 类别设置{ Device * devic ..
发布时间:2020-09-27 18:45:41 C/C++开发

创建shared_ptr来堆叠对象

在我的方法中,创建了一个Player对象,如下所示: Player player(fullName,age); 我的老师给了我们一段代码,其中包含一个将shared_ptr用作播放器对象的构造函数。 / p> // 类的构造函数SomeClass(const std :: shared_ptr客户端,std :: shared_ptr ..
发布时间:2020-09-27 18:37:11 C/C++开发