本文主要是介绍shared_ptr 智能指针 极简火速入门,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
综述:
new的方式,众所皆知,申请的空间在堆区,需要自己释放,而智能指针,通过系统维护,虽然也在堆区申请可空间,但是无需自己释放,从而完全避免了因忘记释放而造成的内存泄露,故墙裂建议用new的地方全部换成shared_ptr。
注:shared_ptr主要用于对象,以下示例代码用int和string是为了方便。
#include <tr1/memory>
#include <iostream>
using namespace std;
int main()
{
// 职能指针 用法一
tr1::shared_ptr<int> tmp(new int(35));
cout<<"shared_ptr init 1:"<<(*tmp)<<endl;
// 智能指针 用法二
tr1::shared_ptr<int> tmp2;
tmp2.reset(new int(15)); // 可用于赋新值
cout<<"shared_ptr init 2:"<<(*(tmp2.get()))<<endl; // get用于获取常规指针,get返回值等同于用new申请变量的指针
// 智能指针 用法三
tr1::shared_ptr<string> tmp3(new string("hello world"));
cout<<"try to use reset() to blank the shared_ptr--befor:"<<(*tmp3)<<"\t"<<(*(tmp3.get()))<<endl;
tmp3.reset();
cout<<"try to use reset() to blank the shared_ptr--after:";
if(tmp3 == NULL )
cout<<"shared_ptr is NULL"<<endl;
else
cout<<"shared_ptr is not NULL"<<(*tmp3)<<endl;
}
这篇关于shared_ptr 智能指针 极简火速入门的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!