内存问题的数组与列表

Aeo*_*058 4 c# arrays list

由于您需要在创建时输入数组的长度,我认为它需要一个可靠,连续的内存块.List可以动态扩展,这是否意味着它不需要连续的内存分配?这是否意味着List不太可能抛出"Out of Memory"异常?

Mat*_*son 7

不,它更有可能耗尽内存(假设您正在比较创建正确大小的数组与创建默认列表并一次添加一个项目).

A List在内部使用数组,当需要调整大小时,它会创建一个与原始数据大小两倍的新数组,并将原始数据复制到其中,然后释放原始数组.

这意味着在调整大小期间内存中有两个数据副本,这意味着更有可能耗尽内存.

List如果在创建列表之前知道最大大小,则可以避免这种情况,但在这种情况下,您也可以使用数组.