简介
这篇文章可能有不对的地方,欢迎指正!!!
智能指针自动释放原理:1 离开作用域,2 引用计数为零,内存释放。
作用域释放适用于unique_ptr。
shared_ptr,应满足两个条件,离开作用域且引用计数为零。
unique_ptr
作用域范围内唯一指针,不可被复制或着“=”。
c++14有个蛋疼的std函数std::move。这个函数可以把unique_ptr的指针传递给另外一个指针。
a = std::move(b);
shared_ptr
内存引用计数原理
weak_ptr
主要与shared_ptr相连用。
shared_ptr<int> ptr = make_shared<int>();
weark_ptr<int> weakptr = ptr;
使用函数lock() 获得所引用的shared_ptr 。
if ( weakptr.lock() != nullptr) {
// TODO...
}
使用函数expired() 判断所引用的shared_ptr ,是否还有效。