当前位置: 移动技术网 > IT编程>开发语言>C/C++ > c/c++ allocator 使用

c/c++ allocator 使用

2018年09月30日  | 移动技术网IT编程  | 我要评论

伤感情歌dj,张瑞敏砸冰箱,梦见下雨涨水

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

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

本人微信:xiaoshitou5854

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网