gpt4 book ai didi

c# - 有两个相同的数组是否需要双倍的内存?

转载 作者:太空宇宙 更新时间:2023-11-03 17:08:34 25 4
gpt4 key购买 nike

我在理解数组如何处理内存时遇到一些问题。我很不擅长用文字解释,所以我会写一些代码给你:)

string[] arr1 = new string[10];
string[] arr2 = new string[10];

/* Fill 'arr1' with random strings */

for(int i = 0; i < 10; i++)
{
arr2[i] = arr1[i]
}

这会占用 2 倍(arr1 和 arr2 中字符串的大小)内存吗?

最初答案对我来说似乎很明显“不”,但后来我记得那个数组及其所有元素都存储在大的连续内存块中以进行快速索引,所以目前我不知道:)

最佳答案

第一个数组包含十个对字符串的引用,因此需要内存来保存它们。这同样适用于第二个数组。

但是字符串是分开存储的。如果将字符串从一个数组复制到另一个数组,则不会分配额外的内存。

因此,在您的情况下,消耗的总内存为(忽略开销):

  • arr1 引用大小的 10 倍
  • arr2 引用大小的 10 倍
  • 一次10个字符串需要的内存

关于c# - 有两个相同的数组是否需要双倍的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9244083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com