zoukankan      html  css  js  c++  java
  • c/c++ allocator 使用

    allocator 使用

    作用:只开辟空间,不调用构造函数

    操作一览表

    allocator<T> a 定义一个名为a的allocator对象,它可以为类型为T的对象分配内存
    a.allocate(n) 分配一段连续的为构造的内,能容纳n个类型为T的对象
    a.deallocate(p, n) 释放从指针p中地址开始的内存,这块内存保存了n个类型为T的对象。p必须是以个先前有allocate返回的指针,而且n必须是创建p时所要求的大小。在调用deallocate以前,用户必须对每个在这块内存中创建的对象调用destroy
    a.construct(p, args) p必须是一个类型为T的指针,指向一块原始内存;args被传递给类型为T的构造函数,用来在p指向的内存块中构造一个对象。
    a.destroy(p) p为类型为T的指针,对p指向的对象执行析构函数。

    小例子

    #include <iostream>
    #include <memory>
    
    using namespace std;
    
    class test{
    public:
      explicit test(int d = 0) : data(d){cout << "new" << data << endl;}
      ~test(){cout << "del" << data << endl;}
      void fun(){cout << data << endl;}
    public:
      int data;
    };
    int main(){
      allocator<test> alloc;
      auto const p = alloc.allocate(2);
      alloc.construct(p, test(1));
      p->fun();
      auto q = p + 1;
      alloc.construct(q, test(2));
      q->fun();
      alloc.destroy(p);
      alloc.destroy(q);
      alloc.deallocate(p,2);
    }
    

    github完整代码

    c/c++ 学习互助QQ群:877684253

    本人微信:xiaoshitou5854

  • 相关阅读:
    2019-9-10做题记录
    2019-9-9做题记录
    【HAOI2008】硬币购物
    【SCOI2010】生成字符串
    第18讲——ActiveX控件
    第20讲 HOOK和数据库编程
    第19讲——动态链接库
    2016-5-22 百度之星第三题--瞬间移动
    2016-4-25 完美世界-实习--小萌的包裹
    第3章 拍摄UFO——单一职责原则
  • 原文地址:https://www.cnblogs.com/xiaoshiwang/p/9726813.html
Copyright © 2011-2022 走看看