日期:2014-05-18  浏览次数:20819 次

关于结构和类的存储方式问题!!!
关于结构和类在内存的存储方式不同上,在网上看到了一个如下的说法:


Class a // 声明对象引用,分配栈内地址
  = new Class(); // 声明对象实体,分配堆内地址
Struct b // 声明对象,分配栈内地址
  = new Struct(); // 调用构造函数



突然有点迷惑了!
上面的说法,对于 Class a = new Class(); 这一语句岂不既存到了栈上,也丰到了堆上???
问问大家,上面的注解,是否正确无误?!

------解决方案--------------------
Class a = new Class(); 
只分配堆内地址
------解决方案--------------------
引用(一个32位的数)本身要放到栈上,
引用指向的数据结构在堆上。

struct实例则直接分配在栈上。
------解决方案--------------------
建议LZ看看引用类型和值类型的资料
一个引用类型:
栈里面保存该实例的地址(和其它一些信息)
堆里面保存该实例的内容

Class a = new Class();就包含了上面两部分
------解决方案--------------------
struct是值类型 直接放在栈上