什么是allocator <T>

Ron*_*nis 3 c++

我正在尝试实现一个向量,我已经读过最好的实现使用allocator类(内存头文件).我不知道它是什么,网站cplusplus.com根本没有帮助我.

Dan*_*ien 6

它是内存管理的抽象.

在C编程中,您基本上使用这些函数malloc()free()分配内存块,而无需知道如何分配块.在C++中,函数是operator new()operator delete().

std::allocator是一个采用一个类型参数的模板,它是要分配的对象类型.的实例std::allocator使用operator new()operator delete()内部,但事实上std::allocator<T>有资料什么T是意味着它知道如何构建和销毁T对象.

四个基本功能std::allocator<T>是:

  1. allocate(size_type n)

    用于operator new()n * sizeof (T)字节分配空间.注意,没有n T构造分配的对象; 不像new T(),它为一个T对象分配空间调用一个无参数构造函数,allocate(size_type n)只为n T对象分配空间.您需要使用construct()显式构造每个.

  2. deallocate(pointer p, size_type n)

    用于operator delete()释放先前调用返回的内存allocate().请注意,deallocate()只释放空间.您必须显式调用destroy()每个n T对象,否则可能会泄漏内存.

  3. construct(pointer p, const T& val)

    调用位于TT对象的复制构造函数p.

  4. destroy(pointer p)

    TT位于的对象上调用析构函数p.