由于在创建时需要输入数组的长度,我假设它需要一 block 坚实的、连续的内存。 List 可以动态扩展,这是否意味着它不需要连续的内存分配?这是否意味着列表不太可能抛出“内存不足”异常?
最佳答案
不,它更有可能耗尽内存(假设您将创建一个正确大小的数组与创建一个默认列表并一次向其中添加一个项目进行比较)。
List
在内部使用一个数组,当它需要调整它的大小时,它会创建一个两倍于原始大小的新数组并将原始数组复制到其中,然后释放原始数组。
这意味着在调整大小期间内存中有两个数据副本,这意味着更有可能耗尽内存。
如果您在创建列表之前知道最大大小,则可以为 List
避免这种情况,但在这种情况下您也可以使用数组。
关于c# - 内存问题的数组与列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18654557/