我正在尝试编写一个使用STL分配器的容器类。目前我的做法是拥有一个私有成员
std::allocator<T> alloc_;
(稍后将进行模板化,以便用户可以选择不同的分配器),然后调用
T* ptr = alloc_.allocate(1,0);
要获取指向新分配的'T'对象的指针(并使用alloc_.construct调用构造函数;请参见下面的答案)。这适用于GNU C++库。
然而,在Solaris上使用STLPort时,这样做会导致无法正确执行,并导致各种奇怪的内存损坏错误。如果我改为
std::allocator_interface<std::allocator<T> > alloc_;
如果一切正常,那么它就是按预期工作的。
如何正确使用stl::allocator?STLPort / Solaris版本在g ++下无法编译,但g ++是正确的吗?
allocator_interface
的东西。 - Khaled Alshaya