关于C#中各种数据类型在内存中的物理位置?
C#中的各种数据在真实物理内存中是如何表示的,为什么要划分成各种数据。能不能解释得再具体一些呢?谢谢!...
C#中的各种数据在真实物理内存中是如何表示的,为什么要划分成各种数据。
能不能解释得再具体一些呢?谢谢! 展开
能不能解释得再具体一些呢?谢谢! 展开
1个回答
展开全部
内存中全是010101....
只不过是有区域划分,我们能用的只是分给程序的区域,好多系统保留用的内存是不允许你访问的
对于程序来说,我们需要了解的是堆区和栈区
栈是用来放固定类型的地方,编译时就能确定存在,并确定大小的,都在这个地方
比如程序里定义一个int型的变量i,那么这个i就是在栈区放的(不管是i的内容还是i本身)
而对于运行中随时生成的对象则在堆区,这个堆区是没有格式的,或者说是什么都能放的
之所以划分各种数据类型是为了方便检查,提高运行效率
比如int型是4个字节,那么运行时只要找4个字节的内存肯定没有错,否则的话就需要某种机制标示这个类型占几个字节,然后才能对应的找到这个数据。
再比如int[10],这个数组,我们要找第5个数字怎么办,只需要知道这个数组的开始内存位置,然后再偏移5x4=20个地址的位置就能直接找到第5个这个数字了
学过C的,或者编译原理的对这理解更深刻,我也不是很清楚具体细节,上面只是我个人的理解
只不过是有区域划分,我们能用的只是分给程序的区域,好多系统保留用的内存是不允许你访问的
对于程序来说,我们需要了解的是堆区和栈区
栈是用来放固定类型的地方,编译时就能确定存在,并确定大小的,都在这个地方
比如程序里定义一个int型的变量i,那么这个i就是在栈区放的(不管是i的内容还是i本身)
而对于运行中随时生成的对象则在堆区,这个堆区是没有格式的,或者说是什么都能放的
之所以划分各种数据类型是为了方便检查,提高运行效率
比如int型是4个字节,那么运行时只要找4个字节的内存肯定没有错,否则的话就需要某种机制标示这个类型占几个字节,然后才能对应的找到这个数据。
再比如int[10],这个数组,我们要找第5个数字怎么办,只需要知道这个数组的开始内存位置,然后再偏移5x4=20个地址的位置就能直接找到第5个这个数字了
学过C的,或者编译原理的对这理解更深刻,我也不是很清楚具体细节,上面只是我个人的理解
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询