确保`std :: vector`不会移动它的指针

时间:2017-10-20 00:32:00

标签: c++ pointers vector memory-management

在C ++中,std::vector<T>基本上是指针(T*),大小对象(int)和容量对象(int)。

在构造时,std::vector创建一个新指针T*,随着向量的增长,std::vector负责在向量增长时分配所需的内存。如果向量增长,以便没有空间添加元素T,那么std::vector将自动将指针移动到另一个位置并复制数据。

是否有可能告诉向量在构造时使用什么指针并指示修正大小并在程序试图使向量大于构造时指示的大小时中止?

1 个答案:

答案 0 :(得分:2)

不,std::vector没有提供直接的方法。

std::vector通过分配器对象分配空间。如果你愿意的话,编写一个额外的调用来禁用分配,并且如果在禁用它之后尝试分配则调用abort,这将是相当容易的。