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

1414315-20180929214102056-1288969656.jpg

本人微信:xiaoshitou5854

转载于:https://www.cnblogs.com/xiaoshiwang/p/9726813.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值