在C++中初始化向量时,你能给向量分配一个大的内存块吗

Can you allocate a big memory block to your vector when initializing them in C++

本文关键字:向量 一个 内存 分配 初始化 C++      更新时间:2023-10-16

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

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

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

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

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