当前位置:  开发笔记 > 编程语言 > 正文

何时在.NET紧凑框架中分配内存?

如何解决《何时在.NET紧凑框架中分配内存?》经验,为你挑选了1个好方法。

何时在.NET紧凑框架中分配内存?如果值和参考类型之间存在差异,请详细说明.赞赏文档或确认步骤.

特别要考虑这种情况......

private MyClass item;  // here?

public void MyMethod()
{
    item = new MyClass();  // or here?
}

Nicholas Man.. 5

分配内存有3种不同的方式.

静态的:

这些在编译时被绑定和分配.例如全局静态变量.

堆栈动态:

这些在运行时绑定并压入堆栈.例如函数调用中的局部变量.

堆动态:

现在堆动态也有一些不同的"子类别",如隐式和显式,但我不会详细介绍.

当你申报时

private MyClass item;  // here?

对MyClass的引用被压入堆栈.它只是一个参考,仅此而已.此时它的值为null.

public void MyMethod()
{
    item = new MyClass();  // or here?
}

正是在这一点上,通过调用'new MyClass()'然后引用它来在堆上显式分配内存.

实际上,在调用MyMethod之后,您有2个变量.名为item的引用类型,以及堆上的未命名变量,该项引用的类型为MyClass.



1> Nicholas Man..:

分配内存有3种不同的方式.

静态的:

这些在编译时被绑定和分配.例如全局静态变量.

堆栈动态:

这些在运行时绑定并压入堆栈.例如函数调用中的局部变量.

堆动态:

现在堆动态也有一些不同的"子类别",如隐式和显式,但我不会详细介绍.

当你申报时

private MyClass item;  // here?

对MyClass的引用被压入堆栈.它只是一个参考,仅此而已.此时它的值为null.

public void MyMethod()
{
    item = new MyClass();  // or here?
}

正是在这一点上,通过调用'new MyClass()'然后引用它来在堆上显式分配内存.

实际上,在调用MyMethod之后,您有2个变量.名为item的引用类型,以及堆上的未命名变量,该项引用的类型为MyClass.

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有