我认为当我使用IntPtr.Size时我应该得到8。但是我仍然使用Widnows 7 x64在x64机器上获得4个,为什么?
答案 0 :(得分:20)
答案 1 :(得分:15)
64位操作系统实现了一个称为WOW64的模拟环境,它模拟了32位Windows环境。您正在构建针对x86的程序,即32位。这意味着您的进程作为32位进程在模拟器下运行,当然指针是4字节宽。
如果您将选项更改为目标x64或AnyCPU,那么当您的进程在64位系统上运行时,指针大小将为8个字节。
答案 2 :(得分:10)
除上述答案外,即使您选择了任何CPU架构,VS2013在项目属性中都有一个名为"首选32位"的新选项。您必须在64位开发计算机上将其关闭才能获得IntPtr.Size = 8。
答案 3 :(得分:1)
检查您的构建目标:x86 / x64或任何cpu 如果您的配置是x86或任何cpu,则intptr可能是4。
更多建议:
如果您不需要在x64模式下运行程序,请不要将构建目标更改为x64,因为x64模式对性能和空间使用都有负面影响。我忘记了原始文章在MSDN上的链接,但主要原因是增加了ptr大小和GC负担,你可以搜索那篇文章。