C++自学25:共享智能指针(make_shared/shared_ptr/reset/use_count)

阅读 83

2022-07-12


std::shared_ptr<int> a = std::make_shared<int>(666);
std::shared_ptr<int> b = a;
std::shared_ptr<int> c = a;
std::shared_ptr<int> d = a;
std::cout << a << std::endl;
std::cout << b << std::endl;
std::cout << c << std::endl;
std::cout << d << std::endl;

use_count

std::shared_ptr<int> a = std::make_shared<int>(666);
std::shared_ptr<int> b = a;
std::shared_ptr<int> c = a;
std::shared_ptr<int> d = a;
// 打印出4,表示有4个指针指向666
std::cout << d.use_count() << std::endl;

reset释放内存,但是共享指针只有所有指针都不再指向666的时候,才会真正释放

std::shared_ptr<int> a = std::make_shared<int>(666);
std::shared_ptr<int> b = a;
std::shared_ptr<int> c = a;
std::shared_ptr<int> d = a;
a.reset();
// 打印出3,原来是4,因为a.reset了,所以还剩下bcd
std::cout << d.use_count() << std::endl;


精彩评论(0)

0 0 举报