【发布时间】:2012-03-01 15:57:51
【问题描述】:
我认为当我使用 IntPtr.Size 时应该得到 8。但是,我仍然在 x64 机器上使用 Widnows 7 x64 得到 4,为什么?
【问题讨论】:
-
您是否将应用程序编译为 x86(属性 > 构建 > 平台目标)而不是 x64?
我认为当我使用 IntPtr.Size 时应该得到 8。但是,我仍然在 x64 机器上使用 Widnows 7 x64 得到 4,为什么?
【问题讨论】:
检查您的文件 CPU 架构,是 x86 吗?它应该是 CPU any / 64bit
【讨论】:
64 位操作系统实现了一个名为WOW64 的模拟环境,它模拟了 32 位 Windows 环境。您正在构建针对 x86 的程序,即 32 位。这意味着您的进程在模拟器下作为 32 位进程运行,当然指针是 4 字节宽。
如果您将选项更改为以 x64 或 AnyCPU 为目标,那么当您的进程在 64 位系统上运行时,指针大小将为 8 个字节。
【讨论】:
除了上面的答案,即使你选择了 Any CPU architecture,VS2013 在项目属性中还有一个新的选项,叫做“Prefer 32-bit”。您必须在 64 位开发机器上关闭它才能获得 IntPtr.Size = 8。
【讨论】:
检查您的构建目标:x86/x64 或任何 cpu 如果您的配置是 x86 或任何 cpu,那么 intptr 可能是 4。
更多建议:
如果您不需要在 x64 模式下运行程序,请不要将构建目标更改为 x64,因为 x64 模式对性能和空间使用都有负面影响。 MSDN上原文章的链接忘记了,主要原因是ptr大小和GC负担的增加,你可以搜索一下那篇文章。
【讨论】: