动态数组 - 删除元素时是否释放内存?

时间:2013-02-04 09:36:22

标签: data-structures

请阅读维基百科Dynamic Array

中的文章

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

enter image description here

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

1 个答案:

答案 0 :(得分:1)

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

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

这真的值得一读; - )

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