gpt4 book ai didi

c# - 数组内存分配说明

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

今天我正在阅读一个关于数组及其内存分配的 SO 线程。我找到了一个answer解释得很清楚,我必须说它非常好。

但是在读完那个答案之后,我又问了几个关于我刚刚读到的内容的问题。到目前为止,我仍然无法自己回答,也无法通过谷歌搜索。因此,我需要您帮助我解释这些问题。

  1. 为什么数组的每个内容都被创建在堆上存储在堆栈中?只是 2 在值类型的情况下避免装箱?
  2. 如果上面是真的,那么为什么数组首先在堆上创建 2?

  3. 当他在回答中说 new int[100] 实际上是在堆上创建时,是否在堆上分配了 400 (100 * 4) 字节?如果是这样,为什么?因为所有的值都存储在堆栈中

  4. 如果创建了 1000 个项目数组,那么堆栈到底如何才能存储?我知道 1 MB 是分配的堆栈大小。但在这种情况下它会超过。那么基础是什么??

如果需要,请随时添加您自己的问题或更多信息。

谢谢

最佳答案

当我们说数组是在堆上分配时,它意味着值将在堆中。数组值不存储在堆栈中。我认为这回答了所有 3 个问题。

var myArray = new int[10];

上一行在堆栈上创建了 myArray variable,但数组的内存是在堆上分配的,因此存储在其中的所有值也都在堆上。

关于c# - 数组内存分配说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7831349/

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