为什么';IntPtr.size';4在Windows 64位上

本文关键字:Windows 64位 size IntPtr 为什么 | 更新日期: 2023-09-27 18:23:47

我认为当我使用IntPtr.Size时,我应该得到8。然而,在使用Windows 7 x64的64位计算机上,我仍然得到4。为什么?

为什么';IntPtr.size';4在Windows 64位上

检查文件CPU架构。是x86吗?它应该是任何CPUx64

64位操作系统实现了一个名为WOW64的模拟环境,该环境模拟32位Windows环境。您正在构建针对x86(即32位)的程序。这意味着您的进程在模拟器下作为一个32位进程运行,当然指针是4字节宽的。

如果将选项更改为目标x64或AnyCPU,则当进程在64位系统上运行时,指针大小将为8字节。

除了前面的答案之外,即使您选择了Any CPU体系结构,Visual Studio 2013在项目属性中也有一个名为"优选32位";。您必须在64位开发机器上关闭它才能获得IntPtr.Size=8

检查您的构建目标:x86x64任何CPU

如果您的配置是x86任何CPU,那么intptr可能是4。

更多建议:

如果您不要求在x64模式下运行程序,请不要将生成目标更改为x64,因为x64模式会对性能和空间使用率产生负面影响。我忘记了MSDN上原始文章的链接,但主要原因是指针大小和GC负担的增加,你可以搜索那篇文章。