关于结构和类的存储方式问题!!!
关于结构和类在内存的存储方式不同上,在网上看到了一个如下的说法:
Class a // 声明对象引用,分配栈内地址
= new Class(); // 声明对象实体,分配堆内地址
Struct b // 声明对象,分配栈内地址
= new Struct(); // 调用构造函数
突然有点迷惑了!
上面的说法,对于 Class a = new Class(); 这一语句岂不既存到了栈上,也丰到了堆上???
问问大家,上面的注解,是否正确无误?!
[解决办法]
Class a = new Class();
只分配堆内地址
[解决办法]
引用(一个32位的数)本身要放到栈上,
引用指向的数据结构在堆上。
struct实例则直接分配在栈上。
[解决办法]
建议LZ看看引用类型和值类型的资料
一个引用类型:
栈里面保存该实例的地址(和其它一些信息)
堆里面保存该实例的内容
Class a = new Class();就包含了上面两部分
[解决办法]
struct是值类型 直接放在栈上