在C ++中初始化它们时,可以为向量分配一个大内存块吗?

时间:2014-11-12 03:34:05

标签: c++

我实例化了一个字符串向量,并尝试在其中放入一个大小为10kb的二进制文件,但它损坏了我的一个变量的堆栈并且程序崩溃了。我想知道在实例化时是否可以分配一个大内存块,而不是使其增长并可能损坏已经使用的连续内存块。

1 个答案:

答案 0 :(得分:3)

  

我想知道在实例化时是否可以分配一个大内存块

是的,你可以; std::vector::reserve()

  

而不是使它成长并可能损坏已经使用的连续内存块。

如果通过调整大小或插入/推送元素来正确增长向量,它将永远不会破坏内存。如果向量变得太大而不适合已经分配的内存,内存管理器将找到更大的连续内存块并将向量移动到那里。