在64位系统中,32位变量占用的空间比64位对象少?

时间:2010-03-12 19:16:22

标签: .net memory 64-bit integer 32-bit

.NET Framework为Int32分配的内存少于64位系统中Int64的内存?

3 个答案:

答案 0 :(得分:1)

不,它们消耗相同的空间量,因为最小的可寻址空间是64位。

答案 1 :(得分:1)

答案 2 :(得分:1)

Int32和Int64应该在所有平台上使用相同的空间(意味着Int32在x86和x64上消耗的数量与另一个Int32相同)。在所有平台上,Int32应使用与Int64不同的数量。

然而,Int32和Int64都是不好的例子,因为它们是结构体。对象在x64与x86上消耗的空间明显不同,因为它们基本上是指针,x64上的指针是x86上的两倍。这适用于函数地址,跳转地址,vtable,调用指令等等。 x64编译的应用程序和x64的IL应用程序JIT代码将远远大于其x86对应程序。过去也是因为编译器更加成熟(这也适用于JIT代码生成),x86代码生成更加成熟并且更加积极地进行优化,但编译器赶上了,现在x64优化已经达到标准,如果不比x86更好。