shared-ptr 相关问题

引用计数智能指针类实现共享所有权

shared_ptr 和构建器模式的 C++ 运行时错误

我正在学习带有共享指针和构建器模式的C++语言。 我编写了以下不起作用的代码,但我不明白为什么它会发出运行时错误。 你能告诉我为什么吗...

回答 2 投票 0

在程序中调用 execv() 时智能指针的内存何时被清除?

我试图了解在从代码中调用 execv() 时共享(智能)指针拥有的内存何时被清除。 假设以下代码: #包括 类测试 { public: ~...

回答 1 投票 0

用新内存覆盖“对象管理共享指针”C++

我有一个简单的代码,如下所示,我正在试验 - #包括 #包括 类测试类{ 民众: TestClass(int a, int b) : mA(a), mB(b) { 标准...

回答 1 投票 0

如何在 std::vector 之间直接分配那些仅具有不同常量的元素?

我有一些类似以下的类型: 结构Order_t; 使用 SpOrder_t = std::shared_ptr; 使用 CpOrder_t = std::shared_ptr; 使用 SomeOrders_t = std::vector<

回答 2 投票 0

shared_ptr 销毁时的线程安全性

对于给定的程序: #包括 #包括 #包括 void threadFunction(std::shared_ptr ptr) { std::cout << "Worker thread: "...

回答 1 投票 0

shared_ptr 和 unique_ptr:关于具体案例的问题

我想定义两个类 A 和 I,使其对象尊重这种关系: i1 ------------a1 |------a2 |----a3 I 类的一个实例指向 0、1、...

回答 2 投票 0

std::enable_shared_from_this::shared_from_this 的工作原理

我只是无法理解 std::enable_shared_from_this::shared_from_this 如何返回与现有指针共享所有权的共享指针。换句话说,你这样做: std::shared_ptr 我只是无法理解 std::enable_shared_from_this::shared_from_this 如何返回与现有指针共享所有权的共享指针。换句话说,你这样做这个: std::shared_ptr<Foo> getFoo() { return shared_from_this(); } 因此,当您调用 getFoo 时,它到底如何获得另一个 shared_ptr 来共享所有权,而不是创建一个拥有相同 shared_ptr 的单独 this。 我需要理解这一点才能理解如何从某个对象创建shared_ptr,这些对象都会增加相同的引用计数而不是初始化单独的shared_ptr。 enable_shared_from_this<T> 有一个 weak_ptr<T> 数据成员。 shared_ptr<T>构造函数可以检测T是否派生自enable_shared_from_this<T>。如果是,则 shared_ptr<T> 构造函数会将 *this(即 shared_ptr<T>)分配给 weak_ptr 中的 enable_shared_from_this<T> 数据成员。然后 shared_from_this() 可以从 shared_ptr<T> 创建 weak_ptr<T>。 可能的实施示例: template<class D> class enable_shared_from_this { protected: constexpr enable_shared_from_this() { } enable_shared_from_this(enable_shared_from_this const&) { } enable_shared_from_this& operator=(enable_shared_from_this const&) { return *this; } public: shared_ptr<T> shared_from_this() { return self_.lock(); } shared_ptr<T const> shared_from_this() const { return self_.lock(); } private: weak_ptr<D> self_; friend shared_ptr<D>; }; template<typename T> shared_ptr<T>::shared_ptr(T* ptr) { // ... // Code that creates control block goes here. // ... // NOTE: This if check is pseudo-code. Won't compile. There's a few // issues not being taken in to account that would make this example // rather noisy. if (is_base_of<enable_shared_from_this<T>, T>::value) { enable_shared_from_this<T>& base = *ptr; base.self_ = *this; } }

回答 1 投票 0

为什么引用计数不是2? [重复]

#包括 #包括 班级类型 { 民众: 类型() { std::cout << __FUNCTION__ << std::endl; } ~type() { std::cout <<

回答 1 投票 0

GLFW 无故开放和关闭

项目设置:Windows机器上的设置如下。 问题: 我运行的是 Windows 11,文件夹中有以下文件。我正在尝试在全屏模式下运行 GLFWwindow 并绘制...

回答 1 投票 0

无法在 C++ 中将类方法指定为 constexpr

我正在使用 constexpr 函数(字符串 -> NFA -> DFA)在 C++ 中编写一个简单的编译时正则表达式解析器。但是,我无法将我的一些类方法设置为 constexpr。我尝试了各种组合...

回答 1 投票 0

我的程序在使用shared_ptr时崩溃了,这段代码有什么问题吗?

我正在学习智能指针,但我不太了解它,我已经知道它会自动删除它指向的对象,但我不知道为什么我的程序崩溃。请看...

回答 1 投票 0

多线程上下文中弱指针未过期则更新

客户端持有一个指向双精度值的共享指针,服务器通过持有weak_pointer在另一个分离线程上更新该值,服务器检查weak_pointer是否过期,然后我...

回答 1 投票 0

std::shared_ptr::reset 的目的是什么?

这是一个基本问题,但我没有找到以前的帖子。以下问题的标题听起来可能和我的问题相同,但问题本身不匹配...

回答 4 投票 0

具有预定义最大使用次数的共享指针

有没有一种方法可以实现具有编译时已知的最大引用计数的共享指针(可能使用 unique_pointer)?我的情况是 max_ref_count = 2。 const auto p = std::make_shared&...

回答 1 投票 0

为什么重载解析在显式提供模板参数时会选择错误的重载?

我的代码在这里: #包括 #包括 #包括 模板 [[也许未使用]] constexpr auto t1(const std::queue &val...

回答 1 投票 0

为什么这个const类型的模板会出错?

感谢阅读这个问题。 代码在这里。版本 C++17 #包括 #包括 #包括 模板 [[也许未使用]] constexpr 自动 t1(

回答 1 投票 0

如果构造函数因调用 std::make_shared 而崩溃,gdb 可以显示崩溃的详细信息吗

在下面的代码中,我调用make_shared,MyClass的构造函数抛出异常。如果核心文件可用,是否可以找出崩溃的根源[例如:

回答 1 投票 0

在shared_ptr的unordered_set中查找一个值

我想在unordered_set中找到一个值,但失败了: typedef std::shared_ptr IntPtr; std::unordered_set s; s.insert(std::make_shared(42)); 布尔找到 = s.fi...

回答 2 投票 0

C++ 对象上的共享指针多次调用析构函数

我正在研究C++智能指针。我做了以下测试: TView 类使用指向 TMat 类的智能指针。 我发现 TMat 析构函数被调用了不止一次。我不明白...

回答 1 投票 0

std::enable_shared_from_this:是否允许在析构函数中调用shared_from_this()?

#包括 #包括 结构 A :公共 std::enable_shared_from_this { 〜A() { 自动 this_ptr =共享_from_this(); // std::bad_weak_ptr 异常...

回答 5 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.