我实例化了一个字符串向量,并尝试在其中放入一个大小为10kb的二进制文件,但它损坏了我的一个变量的堆栈并且程序崩溃了。我想知道在实例化时是否可以分配一个大内存块,而不是使其增长并可能损坏已经使用的连续内存块。
答案 0 :(得分:3)
我想知道在实例化时是否可以分配一个大内存块
是的,你可以; std::vector::reserve()
而不是使它成长并可能损坏已经使用的连续内存块。
如果通过调整大小或插入/推送元素来正确增长向量,它将永远不会破坏内存。如果向量变得太大而不适合已经分配的内存,内存管理器将找到更大的连续内存块并将向量移动到那里。