本文共 1060 字,大约阅读时间需要 3 分钟。
int* iPtr = new int(42);shared_ptr p(iPtr);
int* pI = p.get();
void f(shared_ptr ptr) //增加引用计数{ // do something...} //销毁ptr,减少引用计数
int* iPtr = new int(42);f(shared_ptr (iPtr));int value = *iPtr; // Error! iPtr指针指向的内容已经被释放
auto p = make_shared (42); // 初始化的引用计数为1f(p); // 拷贝后增加为2,销毁ptr减少1,然后变为1int value = *p; //引用计数为1
auto p = make_shared (42);int* iPtr = p.get();{ shared_ptr (iPtr);}int value = *p; // Error! 内存已经被释放
转载地址:http://kuxdi.baihongyu.com/