使用智能指针需要包含头文件#include<memory>
std::shared_ptr采用引用计数,每一个shared_ptr的拷贝都指向相同的内容,当最后一个shared_ptr析构的时候,内存被释放
当使用shared_ptr删除数组时,需要指定删除器
常用的写法有以下几种
shared_ptr需要VS2008 SP1以上才自带有,头文件为#include <memory>,或者使用boost库(boost::shared_ptr),头文件为#include <boost/shared_ptr.hpp>vs2008 error C2039: “shared_ptr”: 不是“std::tr1”的成员
vs2008创建的c++项目中用到了std::tr1::shared_ptr,
编译时报错:error C2039: “shared_ptr”: 不是“std::tr1”的成员。
原因:未安装vs2008 SP1
VS90sp1-KB945140-CHS.exe:
http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=FBEE1648-7106-44A7-9649-6D9F6D58056E
VS2008SP1CHSX1512981.iso:
http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=27673C47-B3B5-4C67-BD99-84E525B5CE61
若 不安装vs2008 SP1,也可使用Boost的实现boost::shared_ptr
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)