最近学习c++ 智能指针,对智能指针初始化有些不解。
std::shared_ptr<> ptr;
ptr=std::make_shared<>;
初始化以后没有置空的情况下,重复第二个步骤,是否会造成内存问题?
最近学习c++ 智能指针,对智能指针初始化有些不解。
std::shared_ptr<> ptr;
ptr=std::make_shared<>;
初始化以后没有置空的情况下,重复第二个步骤,是否会造成内存问题?
一般不会出现问题,
share_ptr<int> test;
test=make_share<int>(1);//这里 make_share<int>(1) 返回一个临时变量,然后调用opeartor= 给test赋值,你查看源代码会发现他会交换 test和那个临时变量的内部指针,然后那个临时变量会被销毁,不会有内存问题,
test=make_share<int>(2);
用share_ptr要注意是多个share_ptr是基于引用计数来确定是否释放内存,如果a引用了b,b反过来引用了a,形成循环,则无法释放