简单的代码例如:
Object test=new Object();
我理解为 test 对象的内存分配到堆中 .
test
从MSDN引用:
引用类型的变量存储对其数据(对象)的引用
但我真的无法理解存储此变量值(引用堆数据),堆栈或堆入或其他地方的位置?
test 变量存储在堆栈中 - 它保存堆上对象的地址 . 对象实例存储在堆上 .
我建议你阅读杰弗里里希特的文章:717721_:
从托管堆分配对象时,new运算符返回对象的内存地址 . 您通常将此地址存储在变量中 . 这称为引用类型变量,因为变量实际上不包含对象的位;相反,变量引用对象的位 . 除了引用类型之外,虚拟对象系统还支持称为值类型的轻量级类型 . 无法在垃圾回收堆上分配值类型对象,表示对象的变量不包含指向对象的指针;变量包含对象本身 . 由于变量包含对象,因此不必取消引用指针以操纵对象 . 当然,这可以提高性能 .
1 回答
test
变量存储在堆栈中 - 它保存堆上对象的地址 . 对象实例存储在堆上 .我建议你阅读杰弗里里希特的文章:717721_: