c# - 数组内存分配说明

标签 c# .net

今天我正在阅读一个关于数组及其内存分配的 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/

相关文章:

c# - MVC C# - 最简单的可能实现

c# - 从异步/等待方法返回列表

.net - 以渐进格式保存 JPG

.net - 对象数据源或代码隐藏 : which is better?

c# - 编写自定义 Msbuild 任务时抛出自定义编译器警告

c# - 当 '\' 后跟成为有效转义序列的字符时,在 '\' 字符上拆分字符串

c# - 为什么不首先调用基类构造函数

c# - 我应该在 ICacheManager 中缓存 json、Bson 还是 JObject?

c# - 弹道库

c# - 流利的 Nhibernate : Configure Database in XML