头文件:#include<memory> 智能指针,是一个模板。创建智能指针时,必须提供指针所指的类型 如果当做前提条件判断,则是检测其是否为空 代码语言:javascript 复制 shared_ptr<string>p1;//指向stringshared_ptr<list<int>> p2;//指向int的listif(p1 && p1->empty())*p1="h1"; 二、make_shared函数 最安全的分配...
最近学习到动态内存与智能指针,发现使用智能指针与普通指针类似:对指针解引用或访问指针指向对象的成员前,需先确定指针不是空指针。 二、判断方法 // 编译环境:MinGW#include<iostream>#include<memory>usingnamespacestd;intmain(){shared_ptr<int>p1;if(p1)//若不是空指针,则对指针解引用cout<<"p1 is...
weak_ptr::expired判断shared_ptr是否有效,即shared_ptr内部数据是否被释放 weak_ptr是否可以监看shared_ptr中的内部数据呢?因为weak_ptr是弱指针,所以不能直接访问,但是可以通过weak_ptr::lock间接访问。 weak_ptr::lock weak_ptr::lock返回构造weak_ptr的shared_ptr,当shared_ptr已经被释放时,返回的是空shared_...
想判断一个shared_ptr是否为空,去http://en.cppreference.com/w/cpp/memory/shared_ptr链接找了接口函数,未发现接口判断是否为空。 最后发现很简单,可以直接用if判断来实现。经@egmkang指出是重载了operator bool。 std::shared_ptr<cv::Mat> pMat(newcv::Mat); if(!pMat) { std::cout <<"error"<< st...
想判断一个shared_ptr是否为空,去http://en.cppreference.com/w/cpp/memory/shared_ptr链接找了接口函数,未发现接口判断是否为空。 最后发现很简单,可以直接用if判断来实现。经@egmkang指出是重载了operator bool。 std::shared_ptr<cv::Mat> pMat(newcv::Mat); ...
代码行4:判断一下该对象是否指向有效的控制块,如果有效则执行代码行5。这里为什么需要判断,因为shared_ptr可能为“空”,未指向任何被管理对象,此时该指针成员变量就是一个空指针 代码行5:调用了控制块对象的成员函数__release_shared,该成员函数内部代码逻辑是将引用计数减1,然后通过引用计数现在的状态判断当前即将释...
p2.reset();// 判断资源是否还存在if(p2){cout<<"p2 不为空"<<endl;}else{cout<<"p2 为空"...
智能指针可以通过重载的bool类型操作符来判断该指针是否指向不为空的对象 #include<iostream> #include<memory> using namespace std; int main() { std::shared_ptr<int> p1; p1.reset(new int(1)); std::shared_ptr<int> p2 = p1; // 引用计数此时应该是2 cout << "p2.use_count() = " <<...
判断std::shared_ptr是否为空 2012-09-10 18:07 −... 海角望天涯 4 17756 C++11 std::shared_ptr总结与使用 2018-05-12 10:34 −最近看代码,智能指针用的比较多,自己平时用的少,周末自己总结总结。方便后续使用。 std::shared_ptr大概总结有以下几点: (1) 智能指针主要的用途就是方便资源的管理,自...
shared_ptr 还有个非常令人厌恶的特点,那就是传染性极强,只有在一处有了shared_ptr,所有出现这个对象...