变量声明&内存分配
本文关键字:分配 内存 声明 变量 | 更新日期: 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#中声明一个变量,该声明都会被移动到编译后的字节码中的方法头中。