none
在结构中定义引用类型变量 RRS feed

  • 问题

  • 传说结构是值类型,存储在堆栈上。

    我现在在结构中定义一个引用类型,而引用类型的值却存储在堆上,堆栈上只是保存其引用,那岂不有点矛盾了?

    咋解释?谢谢各位!

    2011年12月24日 12:57

答案

  • 首先:值类型(struct类型)直接存储在堆栈上,类“类型”存储在堆上,堆栈有一个“指针”地址指向该类的实体,这是真的,并非“传说”。

    其次,结构体中定义引用类型,那么整个结构体中存储在“堆栈”中,里边涉及到“类”的部分是一个引用地址,指向对应的堆的区域,另外开辟空间存储类的实体。不矛盾。


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处
    • 已标记为答案 zoujun8666 2011年12月25日 11:27
    2011年12月25日 2:32
    版主

全部回复

  • 首先:值类型(struct类型)直接存储在堆栈上,类“类型”存储在堆上,堆栈有一个“指针”地址指向该类的实体,这是真的,并非“传说”。

    其次,结构体中定义引用类型,那么整个结构体中存储在“堆栈”中,里边涉及到“类”的部分是一个引用地址,指向对应的堆的区域,另外开辟空间存储类的实体。不矛盾。


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处
    • 已标记为答案 zoujun8666 2011年12月25日 11:27
    2011年12月25日 2:32
    版主
  • 首先谢谢你的回答。

    既然说结构是值类型,值类型存储在堆栈上,而如果包含了引用类型的变量,那就会在堆上分配相应的空间,那么结构就不能说成是存储在堆栈的。

    可能是我钻牛角尖吧!

    呵呵 

    2011年12月25日 11:37