今天我正在阅读一个关于数组及其内存分配的 SO 线程。我找到了一个answer解释得很清楚,我必须说它非常好。
但是在读完那个答案之后,我又问了几个关于我刚刚读到的内容的问题。到目前为止,我仍然无法自己回答,也无法通过谷歌搜索。因此,我需要您帮助我解释这些问题。
- 为什么数组的每个内容都被创建在堆上 存储在堆栈中?只是 2 在值类型的情况下避免装箱?
如果上面是真的,那么为什么数组首先在堆上创建 2?
当他在回答中说 new int[100] 实际上是在堆上创建时,是否在堆上分配了 400 (100 * 4) 字节? 如果是这样,为什么?因为所有的值都存储在堆栈中
- 如果创建了 1000 个项目数组,那么堆栈到底如何才能存储?我知道 1 MB 是分配的堆栈大小。但在 这种情况下它会超过。那么基础是什么??
如果需要,请随时添加您自己的问题或更多信息。
谢谢
最佳答案
当我们说数组是在堆上分配时,它意味着值将在堆中。数组值不存储在堆栈中。我认为这回答了所有 3 个问题。
var myArray = new int[10];
上一行在堆栈上创建了 myArray variable,但数组的内存是在堆上分配的,因此存储在其中的所有值也都在堆上。
关于c# - 数组内存分配说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7831349/