相关疑难解决方法(0)

带有boost :: shared_ptr的NULL指针?

什么相当于以下内容:

std::vector<Foo*> vec;
vec.push_back(NULL);
Run Code Online (Sandbox Code Playgroud)

什么时候处理boost::shared_ptr?它是以下代码吗?

std::vector< boost::shared_ptr<Foo> > vec;
vec.push_back(boost::shared_ptr<Foo>());
Run Code Online (Sandbox Code Playgroud)

注意:我可能会推回很多这样的对象.我应该在nullPtr某处声明一个全局静态对象吗?这样只需要构建其中一个:

boost::shared_ptr<Foo> nullPtr;
Run Code Online (Sandbox Code Playgroud)

c++ null boost pointers shared-ptr

56
推荐指数
4
解决办法
6万
查看次数

.reset 对共享指针做了什么

我想知道.reset()共享指针有什么作用。它是简单地将共享指针的引用计数减一,如此处所述还是删除对象的所有引用计数,将计数重置为 0

这是我的代码示例

std::vector<boost::shared_ptr<foo>> vec;
boost::shared_ptr<foo> f(boost::make_shared<foo>()); //ref count 1
vec.push_back(f); //ref count 1
vec.push_back(f); //ref count 3
int a = f.use_count(); //Will return 3
f.reset();        //Will turn the refernece count to 0
vec[1].reset();   //Will reduce the reference count by 1.
a = f.use_count();
Run Code Online (Sandbox Code Playgroud)

我很好奇为什么这样做f.reset()会将引用计数变为 0,同时vec[1].reset()将引用计数减少 1

c++ shared-ptr

2
推荐指数
1
解决办法
1290
查看次数

标签 统计

c++ ×2

shared-ptr ×2

boost ×1

null ×1

pointers ×1