数组局部变量的哪一部分存储在堆栈中?哪一部分在堆上?

SomeRandomGuy

假设我们有以下代码:

void method() {
    int[] test = new int[3];
    test[0] = 0;
    test[1] = 1;
    test[2] = 2;
}

根据我在Jon Skeet的SO文章中所读到的内容,该new int[3]部分等效于:

public class ArrayInt3 {
    public readonly int length = 3;
    public int value0;
    public int value1;
    public int value2;
}

那么,这是否意味着test(对的引用ArrayInt3)在堆栈上?那是ArrayInt3不是就在堆上?而且我想value0value1value2也都在堆上(例如,在此示例中为0、1、2)?

因此,总共有4个对象在堆上,对吗?

Sotirios Delimanolis

堆栈上将没有任何对象。在堆栈上,将有一个对int[]堆中存储的单个对象的引用值

您必须开始区分对象,变量和值。

局部变量是堆栈中方法stackframe的一部分。因此,的参考值int[]将存储在堆栈中的变量中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

封盖是哪一部分?

C语言变量名称存储在内存的哪一部分?

C ++标准的哪一部分允许在括号中声明变量?

哪一部分是gpg公钥中的指纹

Enum中实现的哪一部分影响了isinstance的行为?

ELF文件的哪一部分必须加载到内存中?

生产和开发中需要节点模块的哪一部分?

Windows中的系统文件缓存使用RAM的哪一部分?

如何确定模式的哪一部分在正则表达式中匹配

首先要测试项目的哪一部分?

奥尔良的哪一部分实际上是分布式的?

我查询的哪一部分是错误的?UNNEST功能

类名的哪一部分是模块?

SQL - 试图判断查询的哪一部分与“OR”语句匹配

JLS 的哪一部分讨论了本地类成员的可访问性?

NgModule的哪一部分满足NgModuleFactoryLoader.load(???)的路径参数

Pytorch张量的哪一部分代表通道?

抛出异常的哪一部分是昂贵的?

http调用应该发生在MVC的哪一部分?

我的代码的哪一部分导致了“超时错误”,为什么?

将邮箱消息转换为PDF:哪一部分?

C ++的哪一部分创建对象的许多“副本”?

大纲属性属于盒模型的哪一部分?

您不了解Hindley-Milner的哪一部分?

了解AsParallel和AsSequential:LINQ查询的哪一部分是并发的?

我的代码的哪一部分使滚动条不显示?

Docker映像的哪一部分定义了其操作系统?

C数据结构的描述在哪一部分?

mvc设计模式的哪一部分代表业务逻辑?