【发布时间】:2011-10-20 04:59:29
【问题描述】:
今天我正在阅读一个关于数组及其内存分配的 SO 线程。我找到了一个answer,它的解释很简洁,我必须说它很棒。
但是在阅读了那个答案之后,我又得到了几个问题,我一直在问自己关于我刚刚读到的内容。到目前为止,我仍然无法自己回答,也无法谷歌搜索。因此,我需要您的帮助来向我解释这些问题。
- 为什么数组的每个内容都是在堆上创建的 存储在堆栈上?只有 2 在值类型的情况下避免装箱?
如果上面是真的,那么为什么数组首先要在堆上创建 2?
当他在回答中说 new int[100] 实际上是在堆上创建时,是否在堆上分配了 400 (100 * 4) 字节? 如果是这样,为什么?因为所有值都存储在堆栈中
- 如果创建了 1000 项数组,那么究竟如何堆栈才足够存储?我知道 1 MB 是分配的堆栈大小。但在 这种情况下会超过。那么基础是什么??
如果您可能需要,请随时添加您自己的问题或更多信息。
谢谢
【问题讨论】:
-
即使认为这个话题似乎是重复的,我更愿意根据我的疑问来扩展关于它的讨论。是的,我阅读了 erics 博客,但我仍然无法说服我的怀疑。因此这个线程。