变量声明&内存分配

本文关键字:分配 内存 声明 变量 | 更新日期: 2023-09-27 18:11:58

我想知道在局部变量声明过程中是否分配了内存。

假设我在函数中写这段代码,int a =10;分配了内存,值10存储在其中。

int a;呢?这个声明语句会分配4字节的内存吗?

谢谢。

变量声明&内存分配

局部变量通常存储在堆栈中,因此确实为int分配了字节:

int a;

因为它只是使用默认值(0),所以它与

相同:
int a = 0;

int是一个值类型,因此在堆栈中存储它的值。如果要创建引用类型为:

的局部变量
SomeClass a;
然后在堆栈上只分配引用(值为null,因为它是引用类型的默认值)。欲了解更多信息,请参考

调用方法时,在堆栈上为每个局部变量分配空间。

所以如果你在一个方法中声明一个int变量,它的堆栈帧将占用额外的4字节内存。

没有在其他地方使用额外的内存,并且在方法返回时将其清理。

这里需要理解的重要一点是,MSIL不支持在方法中的任何地方声明属性。无论何时在c#中声明一个变量,该声明都会被移动到编译后的字节码中的方法头中。