繁体   English   中英

数组属性会导致堆上的内存分配吗?

[英]Do array properties cause memory allocation on the heap?

考虑以下:

public class FooBar {
    public int[] SomeNumbers {
        get { return _someNumbers; }
        private set;
    }

    private int[] _someNumbers;

    public FooBar() {
        _someNumbers = new int[2];
        _someNumbers[0] = 1;
        _someNumbers[1] = 2;
    }
}

// in some other method somewhere...

FooBar foobar = new FooBar();
Debug.Log(foobar.SomeNumbers[0]);

我想知道的是,调用SomeNumbers属性是否会导致堆分配? 基本上是导致要创建数组的副本,还是仅仅是指针?

我问是因为我试图解决由于返回数组的函数而导致的某些GC问题,并且我想确保将这样的值缓存的想法实际上会有所作为

数组始终是引用类型,因此,是的,它是“基本上返回指针”。

如果您要调试内存问题,建议您使用内存分析器。 Visual Studio内置了一个也可以使用第3方(我个人很喜欢DotMemory ,它有5天的免费试用期)。 使用探查器将帮助您确定正在创建内存对象的内容以及使内存对象保持活动状态的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM