为了账号安全,请及时绑定邮箱和手机立即绑定

对象的内存分配问题

对象的内存分配问题

喵喔喔 2018-12-06 21:16:44
class Program { User u1 = new User(); static User u2 = new User(); int lenght1 = 2; static int length2 = 2; static void Main(string[] args) { } }   对 对象的内存分配还是有一些疑问,先不管它的先后顺序。 1. u1分配:先在堆栈上分配一个变量u1,再在托管堆中分配一内存new User(),再将u1指向new User(); 是不是这样的?   2. u2的分配和u1的一样吗,也是u2在堆栈,new User()在托管堆吗?static 变量会被分配到加载堆中Loader Heap,是 指等号右边的分配到加载堆中还是 连左边的一起分配到加载堆中。   3.引用对象Class中的 值类型也是分配在托管堆中,是指 值分配在托管堆中吗? 如 length1, 是值2 分配在托管堆中,length1这个变量是分配在 堆栈吗?   4.如果以上是这样分配的,那就是 等号 左边的变量分配在 堆栈,右边的值分配在托管堆中,是不是这样? 各位解释一下,谢谢!
查看完整描述

20 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

@chenping2008:  谢谢! 就是 在 看这本书 时  想到的疑问
查看完整回答
反对 回复 2018-12-09
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

谢谢,文章 不错
查看完整回答
反对 回复 2018-12-09
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

这个 弄清楚了, 很多问题 可以解析
查看完整回答
反对 回复 2018-12-09
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

我觉得只要分清楚引用和基本数据类型就可以了,冒昧地问一下,分这么细的原因???
查看完整回答
反对 回复 2018-12-09
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

@chenping2008:  呵呵 谢谢,还在理解中...
查看完整回答
反对 回复 2018-12-09
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

@Qlin: 说说
查看完整回答
反对 回复 2018-12-09
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

@chenping2008:  大哥 ,你这幅图 我倒是不同意啊
查看完整回答
反对 回复 2018-12-09
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

@chenping2008:  这个 知道,  u1 这个变量是在 堆栈上, u1指向的 值 在 托管堆上,是不是?
查看完整回答
反对 回复 2018-12-09
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

@Qlin: 其实你只是关注了那些变量,你有没有看到还有一个program的实例的。你说的那些变量都是在program的实例中的
查看完整回答
反对 回复 2018-12-09
?
大话西游666

TA贡献1817条经验 获得超14个赞

值类型肯定是存放在栈上,引用类型肯定是存放在堆中 static标识只是标识该对象在加载时被创建,其他和普通对象没区别
查看完整回答
反对 回复 2018-12-09
?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

@Qlin: 这个本 你不得不知道的.net 也不错的
查看完整回答
反对 回复 2018-12-09
?
侃侃无极

TA贡献2051条经验 获得超10个赞

书上也是 这样带过,有没有 更细的 说说 u1 这个变量是分配在 堆栈,但是 u1指向的那个对象值分配在 堆 中吧?
查看完整回答
反对 回复 2018-12-09
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

CLR via C# 买本这本书看看
查看完整回答
反对 回复 2018-12-09
?
烙印99

TA贡献1829条经验 获得超13个赞

@Qlin:  前面说了呀,static标识只是标识该对象在加载时被创建,其他和普通对象没区别
查看完整回答
反对 回复 2018-12-09
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

@Rich.T:  谢谢,兄弟 那说说 static int length2 = 2; 吧, 左边 和右边是怎么分布的?
查看完整回答
反对 回复 2018-12-09
?
温温酱

TA贡献1752条经验 获得超4个赞

@Qlin:  1. u1分配:先在堆栈上分配一个变量u1,再在托管堆中分配一内存new User(),再将u1指向new User(); 是不是这样的? 这个理解是对的
查看完整回答
反对 回复 2018-12-09
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

这个 引用类型 和值类型的分配 是你这样说的。细点说说吧, u1 这个变量是分配在 堆栈,但是 u1指向的那个对象值分配在 堆 中吧?
查看完整回答
反对 回复 2018-12-09
  • 20 回答
  • 0 关注
  • 323 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信