0

按照维基百科动态数组中的文章

当最后一个空的内存单元被填满时,它会自动以几何级数分配内存,然后将整个数据复制到新数组中。当移除数量大于增加数量的元素时会发生什么?它也会自动释放内存吗?还是让它保持原样?例如在上述维基百科链接右上角的图片中,

在此处输入图像描述

在最后一步之后 2|7|1|3|8|4| 1 删除了除 2 之外的所有元素。然后会发生什么?它是否分配较小的内存并将全部内容复制到新的内存中?附带问题:如何或什么决定分配给动态数组的初始内存量是多少?

4

1 回答 1

1

您引用的文章回答了您的问题:

“如果其大小低于某个阈值,许多动态数组也会释放一些底层存储,[...]”

真的很值得一读;-)

对于预先知道需要特定大小的情况,一些实现提供了特定方法(“reserve()”,在 C++ 标准库中)。

于 2013-02-05T10:47:50.917 回答