std :: vector X(0)是否保证不分配?

时间:2017-05-16 13:16:40

标签: c++ vector language-lawyer allocation

理论上,给出:

std::vector X(0);

然后X将从堆栈中为自己分配内存,但是保证不分配堆内存吗?

换句话说,由于实现通常会使用向量的指针,这个指针总是最初为0?

注意:这与Initial capacity of vector in C++不同,因为在没有参数传递给构造函数时会询问容量,而不是在容量为0时对堆分配的保证;在这种情况下,容量可以是非零的事实说明了差异。

1 个答案:

答案 0 :(得分:2)

该构造函数调用explicit vector( size_type count )执行:

  

使用计数默认插入的T实例构造容器。   没有制作副本。

唯一的保证是向量将为空,其size()将为0.允许实现分配他们想要的任何记录或初始化的任何内容。

因此,如果您的问题是,如果您可以依靠X占用0个字节的免费商店空间,则答案为