C++ + #include<memory> +智能指针

先转过来,稍后再整理!!

=========================auto_ptr====================

1 auto_ptr

2 unique_ptr

 

1 auto_ptr

 一、解决什么问题?

C++的auto_ptr所做的事情,就是动态分配对象以及当对象不再需要时自动执行清理。

二怎么解决?

1.基本思想?

2.规则?

使用std::auto_ptr,要#include <memory>。

 double *p = new double;//为指针分配内存

std::auto_ptr<double> autop(p);

//继承性指针,必须依赖上面的指针p

//创建智能指针管理指针p指向的内存,可以自动释放内存,不用delete就可以自动删除

//搭配原生指针p使用,不用担心多delete或者少delete

//auto_ptr更多用于管理类和对象的内存

3.流程?

4.代码?

#include <iostream>
#include <memory>

void main()
{
    for (int i = 0; i < 10000000; i++)
    {
        double *p = new double;//为指针分配内存

        std::auto_ptr<double> autop(p);
        //继承性指针,必须依赖上面的指针p
        //创建智能指针管理指针p指向的内存,可以自动释放内存,不用delete就可以自动删除
        //搭配原生指针p使用,不用担心多delete或者少delete
        //auto_ptr更多用于管理类和对象的内存
    }

    system("pause");
}

=========================unique_ptr==================== 

 

unique_ptr是一种定义在<memory>中的智能指针(smart pointer)。它持有对对象的独有权——两个unique_ptr不能指向一个对象,不能进行复制操作只能进行移动操作。unique_ptr在超出作用域,即以下情况时它指向的对象会被摧毁:

unique_ptr指向的对象被破坏

对象通过operator=()或reset()被指定到另一个指针)

unique_ptr还可能没有对象,这种情况被称为empty。

 

//C++11新指针

//std::unique_ptr<指针指向的变量数据类型>指针变量名(new 指针指向的变量数据类型);

std::unique_ptr<double>pdb(new double);


#include <iostream>
#include <memory>

void main()
{
    for (int i = 0; i < 10000000; i++)
    {
        //C++11新指针
        //std::unique_ptr<指针指向的变量数据类型>指针变量名(new 指针指向的变量数据类型);
        std::unique_ptr<double>pdb(new double);
    }

    system("pause");
}

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值