空间配置器(c++)

博客介绍了C++中空间配置器的作用,包括默认配置器的性能、自定义配置器的绑定方式、rebind机制以及空间配置器的API。讨论了如何通过内存池来提高性能,并提及侯捷的STL源码剖析中关于高性能allocator的分析。
摘要由CSDN通过智能技术生成

容器的空间的分配都需要空间配置器。

1、默认的空间配置器

vector类的模板声明为:

  template<class _Ty, class _Ax = allocator<_Ty> >
  class vector

一般来说,我们没有必要重新定义一个allocator。自定义的方式主要是为了提高内存分配相关操作的性能。而STL提供的方式性能已经足够好了。

在windows平台上,new的底层实现是基于C语言的malloc函数;malloc函数家族又是基于Windows HeapCreate、HeapAlloc、HeapFree等相关API来实现的(具体可以参考%VSInstallFolder%\VC\crt\src目录中的heapinit.c、malloc.c和new.cpp等相关函数)。

2、空间配置器的定义

template <typename T>
class CHxAllocator
{
 public:
 // typedefs...
 typedef T                   value_type;
 typedef value_type*         pointer;
 typedef value_type&         reference;
 typedef value_type const*   const_pointer;
 typedef value_type const&   const_reference;
 typedef size_t              size_type;
 typedef ptrdiff_t           difference_type;
 // rebind...
 template <typename _other> struct rebind { typedef CHxAllocator<_other> other; };
};


3、空间配置器的绑定

rebind是一个可以分配空间给另一个类型的结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值