【发布时间】:2020-10-08 07:16:14
【问题描述】:
我是 shared_ptr 的新手,无法理解这一点,
我想将shared_ptr 存储在自定义struct 中。
struct ThreadSafeQMsg
{
ThreadSafeQMsg(shared_ptr<ptree> control, shared_ptr<uint32_t> data=0, int data_size=0) {
data_size = data_size;
data = data;
control = control;
}
size_t data_size;
shared_ptr<ptree> control;
shared_ptr<uint32_t> data;
};
ThreadSafeQMsg* tmsg = new ThreadSafeQMsg(control,spData, data_size);
PRINT_LOG("message with data[" << std::dec << tmsg->data_size << ",ref: " << std::dec << tmsg->data.use_count()
<< "] & control[ref: " << std::dec << tmsg->control.use_count() << "]");
在分配之前,我看到引用计数为 1 在分配后检查时,我得到:
message with data[140737018606128,ref: 0] & control[ref: 0]
我在这里错过了什么?
【问题讨论】:
-
虽然不是必需的,但为了安全起见,构造函数参数的命名方式最好与成员变量不同。
标签: c++ c++11 shared-ptr