【发布时间】:2015-01-25 13:41:00
【问题描述】:
在使用 Visual Studio 2008 64 位编译器为现有 32 位 app.exe(企业应用程序)编译代码后,不使用 /Wp64 编译开关,我们解决了我们遇到的所有 1/2/3 级警告数据类型更改,然后使用 AllocationPreference 注册表项集运行应用程序。
应用程序崩溃并设置了注册表项,如果删除此注册表项,应用程序运行正常。
在这种情况下我该如何处理?您认为使用/Wp64 会增加任何价值吗?
【问题讨论】:
-
@bk1e 我看到了您对此类类似查询的回答。根据上述情况仍然添加
/Wp64开关是否有意义? -
/Wp64不会捕获所有可移植性问题。您将需要调试您的程序以查看还存在哪些其他问题。 -
@RaymondChen 是的,我们看到很多故障转储。你认为覆盖 1/2/3 级警告应该覆盖大部分(80-90%)的可移植性问题吗?比如结构/联合等中的位对齐。
-
尝试使用 PVS-Studio 工具 (viva64.com/en/viva64-tool) 进行 64 次诊断。
-
@AndreyCpp 如果不使用此注册表项,如果我监控我的应用程序的“虚拟内存已用空间”,它会显示为
10 GB,这意味着应用程序正在处理 64 个 bt 地址位置。我不确定,此注册表项如何在 64 位虚拟地址空间上选择更高范围的地址,应用程序会失败。解决每一次崩溃都需要时间。
标签: c++ windows 32bit-64bit