【发布时间】:2009-10-29 10:53:10
【问题描述】:
如果 std::vector 和朋友都在自我调整大小,这是否意味着如果我这样声明一个向量:
std::vector<string> myvec;
然后它将使用更多堆栈调整大小,而:
std::vector<string> *myvec = new std::vector<string>();
会使用更多堆来调整大小吗?
【问题讨论】:
-
您还可以实现一个“固定大小”向量来将所有这些存储在堆栈中。它工作得很好,可能是一种优化。然而,代价是它不能无限扩展 > 你必须满足于一个上限,而且它总是会消耗那么多空间。
-
这很有趣,所以一个“固定大小”的向量完全在堆栈上?
-
我不知道“固定大小”向量,但是如果您希望堆栈上的固定数据,请考虑使用 std::tr1::array,这看起来很相似。
-
@Benj:不。矢量对象具有固定大小(无论您放入多少)。但是向量(可能)包含一个指向堆分配的存储块的指针,它将所有对象保存在向量内。
-
第二个选项的目的是什么?
标签: c++ stl memory-management