c# - 内存问题的数组与列表

标签 c# arrays list

由于在创建时需要输入数组的长度,我假设它需要一 block 坚实的、连续的内存。 List 可以动态扩展,这是否意味着它不需要连续的内存分配?这是否意味着列表不太可能抛出“内存不足”异常?

最佳答案

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

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

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

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

关于c# - 内存问题的数组与列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18654557/

相关文章:

c# - 根据 C# 中的字符数将长字符串拆分为子字符串

javascript - 有没有比 for 循环更好的方法将对象数组的属性添加到另一个数组?

c# - 不区分大小写的列表搜索

c# - 尽管具有 Deconstruct 扩展方法,但为什么在 Func<KeyValuePair,T> 中解构不起作用?

c# - 不支持的 MONO 函数 "System.Security.Principal.WindowsIdentity.GetCurrent(bool)"使用 UNITY3D 和 MATLAB 的 MWARRAY.DLL

android - 从自定义 ListView 中抓取过滤项目时的 IndexOutOfBound

java - 对多个数组进行排序

python - 格式化列表的所有元素

Python - 排序列表

c# - C、C++、Java、C# 中的 main()