shared-ptr相关内容
在 C ++ 11 中&上面优点或缺点是什么,当直接将 std :: thread 作为类的成员存储时,就像这样: std :: thread my_thread; 与存储 std :: shared_ptr 或 std :: unique_ptr 这样的线程: std :: shared_ptr my_thread_ptr;
..
我刚刚编写了一个测试程序,以找到最快的分配方法。释放许多由 shared_ptr 管理的对象。 我尝试了 shared_ptr 使用新, shared_ptr 和 pool , make_shared , allocate_shared 。让我感到惊讶的是, allocate_shared 比 pool shared_ptr 慢>。 我使用发布版本在 vs2017 + win10 中测
..
我看过一些使用 std :: shared_ptr 和自定义删除器的代码,这些删除器测试nullptr的参数,例如 MyClass 具有 close()方法,并使用某些 CreateMyClass 构造: auto pMyClass = std :: shared_ptr(CreateMyClass(), [](MyClass * ptr) { if(ptr)
..
我想找到一种确定类型是否为shared_ptr的模板化方法,并以此为基础对函数进行新的专业化处理。 示例main函数是 模板内联 void CEREAL_LOAD_FUNCTION_NAME(RelaxedJSONInputArchive& ar,NameValuePair& t) { std :: cout
..
我有一个带有指针成员的基类。我必须做出有根据的猜测,以确定它应该是 unique_ptr 还是 shared_ptr 。 class Base { public: Base():pInt(std :: unique_ptr(new int(10))){}; 虚拟std :: unique_ptr get()= 0; // Base():pInt(std
..
有时候,我需要具有无操作删除程序的 shared_ptr 实例,因为API希望使用 shared_ptr 实例,它想存储一段有限的时间,但是我得到了一个原始指针,不允许我拥有比运行时间更长的时间。 在这种情况下,我一直在使用无操作删除器,例如 [](const void *){} ,但是今天我发现,还有另一种选择,使用(或滥用?)别名为 shared_ptr 的构造函数: void
..
考虑此代码: #include #include class SomeClass { public: SomeClass(){ std :: cout
..
我有一个资源管理器,就像《现代C ++设计》一书中提出的Andrei Alexandrescu一样,它遵循基于策略的设计。不过,我遇到了麻烦,因为我的资源管理器需要能够通过 shared_from_this()为托管资源提供对自身的引用。 我建立了一个重现我的问题的最小示例,结果您可以在此处看到。 > 基本上,我有一些托管资源需要引用其管理器: 模板
..
我只是不明白 std :: enable_shared_from_this :: shared_from_this 如何返回与现有指针共享所有权的共享pinter。换句话说,您此: std :: shared_ptr getFoo(){return shared_from_this(); } 所以当您呼叫 getFoo 时,确切地说,它得到与共享所有权的另一个
..
这是一个基本问题,但是我没有找到有关它的先前文章。以下问题的标题听起来可能与我的问题相同,但问题本身与标题不匹配: 我很困惑 std :: shared_ptr 的 reset()成员函数的目的:除了赋值外,它还有什么作用 具体来说,给定定义: auto p = std :: make_shared(1); 以下两行等效: p
..
我是从Objective-C的背景来学习C ++ 11的,而我正在努力解决的一件事是C ++ 11 lambda与Object-C“块”的不同捕获语义。 (请参见此处比较)。 在Objective-C中,像C ++一样,自身 / 指针。但是由于Objective-C中的所有对象实际上都是“共享指针”,因此要使用C ++术语,您可以这样做: doSomethingAsynchronou
..
因此,当使用 shared_ptr 时,您可以这样写: shared_ptr var(new Type()); 我想知道为什么他们不允许更简单更好的(imo): shared_ptr var = new Type(); 要实现此功能,您需要使用 .reset(): shared_ptr
..
我想用 std :: shared_ptr 替换班级中的一些原始指针,以便在创建该类的副本时不必担心。但是原始指针指向动态数组。当您给它提供自定义删除器(例如,things)时,可以将shared_ptr与动态数组一起使用。 default_delete 。 但是一旦我尝试分配,我就会得到一个很大的错误列表 这是一个最小的代码示例: #include
..
通常,我更喜欢从工厂返回 unique_ptr 。 最近,我遇到了一个问题,即为继承 enable_shared_from_this 的类返回 unique_ptr 。此类的用户可能会意外地调用 shared_from_this(),尽管该调用不属于任何 shared_ptr ,结果带有 std :: bad_weak_ptr 异常(或直到C ++ 17之前未定义的行为,通常作为异常来实现)。
..
在C ++ 11上找不到很多,只能在增强上使用。 请考虑以下课程: 类状态 { std :: shared_ptr _图形; public: State(const State& state) { //这是赋值,因此指向同一对象 this-> _graph = std :: make_shared(state._graph);
..
我无法理解C ++ 11中智能指针作为类成员的用法。我已经阅读了很多有关智能指针的文章,我想我确实理解 unique_ptr 和 shared_ptr / weak_ptr 通常可以正常工作。我不了解实际用途。似乎每个人都建议使用 unique_ptr 作为几乎所有时间的方式。但是我将如何实现这样的东西: class Device { }; 类别设置{ Device * devic
..
当我发现标准定义了 std :: unique_ptr 和 std :: shared_ptr 关于指针可能拥有的Deleter的两种完全不同的方式。以下是 cppreference :: unique_ptr 和 cppreference :: shared_ptr : template >类uniq
..
在我的方法中,创建了一个Player对象,如下所示: Player player(fullName,age); 我的老师给了我们一段代码,其中包含一个将shared_ptr用作播放器对象的构造函数。 / p> // 类的构造函数SomeClass(const std :: shared_ptr客户端,std :: shared_ptr
..
据我了解, make_shared(...)可以提供一些内存分配优化(它可以在与T类实例相同的内存块中分配引用计数器) enable_shared_from_this是否提供相同的优化?因此: class T:std :: enable_shared_from_this {}; ... auto t = std :: shared_ptr(新T);
..
我只是知道 std :: enable_shared_from_this 表单此链接。 但是阅读下面的代码后,我不知道何时使用它。 尝试{ 好not_so_good; std :: shared_ptr gp1 = not_so_good.getptr(); } catch(std :: bad_weak_ptr& e){ //未定义行为(直到C ++ 17)
..