Xia*_*Pei 12 c++ stl allocator
我注意到c ++中的allocator为void类型提供了特化.这样做有什么特别的目的吗?为void类型分配内存没有意义,对吧?
Matt Austern的旧标准图书馆员专栏对一般的分配器进行了相当全面的讨论,包括这个小节目:
我们对虚空做了什么?有时容器必须引用void指针,重新绑定机制几乎给了我们所需要的东西,但并不完全.它不起作用,因为我们需要编写类似malloc_allocator :: pointer的东西,并且我们已经定义了malloc_allocator,以便为void实例化它是非法的.它使用sizeof(T),它指的是T&; 当T无效时,两者都不合法.解决方案就像问题一样简单:将malloc_allocator专门用于void,除了引用void指针所需的最小值之外,其他所有内容都省略了.
malloc_allocator是Austern在他的示例中使用的示例实现,但它适用于一般情况.