std::vector X(0) 是否保证不分配
Is std::vector X(0) guaranteed not to allocate?
理论上,给定:
std::vector X(0);
然后 X 将从堆栈中为自己分配内存,但它是否保证不分配堆内存?
换句话说,由于实现通常会使用矢量指针,因此该指针最初是否总是 0?
注意:这与 C++ 中向量的初始容量不同,因为当没有参数传递给构造函数时,它会询问容量,而不是在容量为 0 时询问堆分配的保证; 在这种情况下,容量可以不为零这一事实说明了差异。
该构造函数调用explicit vector( size_type count )
它执行以下操作:
使用计数默认插入的 T 实例构造容器。 不制作副本。
你得到的唯一保证是向量为空,其size()
将为 0。允许实现分配他们想要的任何内容来记账或初始化时的任何内容。
因此,如果您的问题是您是否可以指望X
占用0字节的免费存储空间,那么答案是否定的。
相关文章:
- 我在二维向量中是否正确分配了内存
- 当一个新对象被分配到它的地址时,对象是否必须被销毁
- 在函数范围内在堆栈上分配的数组在离开函数时是否总是被释放?
- 是否可以使用其他变量为变量分配值,而无需在 C++ 中更改其值?
- 在程序变得低效之前,允许多少新的[]和删除[]分配是否有限制?
- 对于堆上的页面对齐内存分配是否有任何优化或不同的 API?
- C++:检查动态取消分配是否正常工作
- C++,在对象内分配多个数据时,堆栈分配是否更有效? 在下面的程序中,类A_Heap的效率会更低吗?
- 如何检查C++智能指针内存分配是否成功?
- 如果可能,标准::映射分配是否静态
- MISRA C++(规则 18-4-1)和动态内存分配 - 是否允许 std::string
- 此分配是否创建副本
- clang格式的对齐分配是否损坏
- 动态内存分配是否由指针完成
- 分配是否意味着毁灭
- 位域分配 - 是否安全
- 堆上的分配是否会影响访问性能
- 如何检查内存分配是否仍然有效
- for循环期间的动态分配是否会造成内存泄漏?
- 向量的重新分配是否会导致父向量的重新分配?