我正在为std :: vector编写自定义分配器,并且想知道std :: vector如何使用指定的分配器?可以为5个对象分配内存,然后部分释放内存,例如在前2个元素,然后是3个元素......(我没有看到任何理由不这样做)。
标准中有没有提到它?我找不到任何东西。
答案 0 :(得分:4)
是否保证
std::vector
每个已分配内存的分配函数,还会一次解除分配,单个解除分配调用?
是。 std::allocator::deallocate
的原型是
void deallocate( pointer p, size_type n );
它可以为5个对象分配内存,然后部分释放内存,例如在前2个元素,然后是3个元素......(我没有看到任何理由不这样做)。
但n
与之前传递给匹配的allocate
函数的内容不同,explained in the spec.:
释放指针p引用的存储,该存储必须是先前调用allocate()获得的指针。参数n必须等于最初生成p。
的allocate()调用的第一个参数
基本上,deallocate
的参数是
allocate
n