zoukankan      html  css  js  c++  java
  • #include <memory>

    1 auto_ptr

    2 unique_ptr

    1 auto_ptr

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

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

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

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

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

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

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

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

     1 #include <iostream>
     2 #include <memory>
     3 
     4 void main()
     5 {
     6     for (int i = 0; i < 10000000; i++)
     7     {
     8         double *p = new double;//为指针分配内存
     9 
    10         std::auto_ptr<double> autop(p);
    11         //继承性指针,必须依赖上面的指针p
    12         //创建智能指针管理指针p指向的内存,可以自动释放内存,不用delete就可以自动删除
    13         //搭配原生指针p使用,不用担心多delete或者少delete
    14         //auto_ptr更多用于管理类和对象的内存
    15     }
    16 
    17     system("pause");
    18 }

    2 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);

     1 #include <iostream>
     2 #include <memory>
     3 
     4 void main()
     5 {
     6     for (int i = 0; i < 10000000; i++)
     7     {
     8         //C++11新指针
     9         //std::unique_ptr<指针指向的变量数据类型>指针变量名(new 指针指向的变量数据类型);
    10         std::unique_ptr<double>pdb(new double);
    11     }
    12 
    13     system("pause");
    14 }
  • 相关阅读:
    AfxMessageBox详细使用说明
    动态规划: 求一个一维整数数组的最大子序列和
    常见HTTP状态码
    PHP 基础系列(三) 【转】PHP 函数实现原理及性能分析
    empty() isset() isnull() 比较
    isset() 与 array_key_exists() 比较
    PHP基础系列(二) PHP数组相关的函数分类整理
    PHP基础系列(一) PHP字符串相关的函数分类整理
    linux df 命令
    grep 同时满足多个关键字和满足任意关键字
  • 原文地址:https://www.cnblogs.com/denggelin/p/5616108.html
Copyright © 2011-2022 走看看