向量容器在连续内存中保存对象。这是很容易理解的情况,如向量。但是,如果它是一个向量向量,如vector>,这个向量向量中的每个向量都可以有不同的长度。它如何管理内存?每次我们推入一个新向量时,它是否分配一个固定长度的向量?如果是的话,如果第一个向量在push_back期间超出了大小,会发生什么情况。它是否会触发向量重分配和复制/移动的完整向量?
发布于 2019-10-29 21:03:38
vector包含指向连续内存块的指针。当内存耗尽时,它会分配一个新的内存块。向量的vector只是指向内存块的指针的vector。虽然每个内存块是一个连续块,但它们不一定是相邻的,也就是说,当一个向量结束时,下一个向量开始时,几乎总是存在一个空白。
为什么不一定而且几乎总是语义学?因为它取决于您正在使用的内存分配器和操作系统内部。最终,为用户空间程序分配和服务内存块是操作系统的工作之一。
https://stackoverflow.com/questions/58615132
复制相似问题