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

Is std::vector X(0) guaranteed not to allocate?

本文关键字:分配 是否 vector std      更新时间:2023-10-16

理论上,给定:

std::vector X(0);

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

换句话说,由于实现通常会使用矢量指针,因此该指针最初是否总是 0?

注意:这与 C++ 中向量的初始容量不同,因为当没有参数传递给构造函数时,它会询问容量,而不是在容量为 0 时询问堆分配的保证; 在这种情况下,容量可以不为零这一事实说明了差异。

该构造函数调用explicit vector( size_type count )它执行以下操作:

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

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

因此,如果您的问题是您是否可以指望X占用0字节的免费存储空间,那么答案是否定的