修复: 发生访问冲突时您运行基于 x64 平台的基于 Visual C++ 2010年的应用程序,如果您使用"/ O2"编译器选项生成项目

适用于: Visual Studio 2010

症状


请考虑以下情况:
  • 有一个 Visual C++ 2010年项目。 该项目的源代码具有结构或类超过 64 个字节。
  • 生成项目时用于基于 x64 的平台,并使用了/O2编译器选项。 
  • 运行该应用程序。
在这种情况下,发生访问冲突,并且应用程序崩溃。

原因


由于 Visual Studio 2010 的基于 x64 编译器通过调整分配对齐方式从 64 字节到 16 个字节的数据来优化代码,将出现此问题。 因此,当对象大小超过64byte时,会出现该内存问题。

解决方案


修补程序信息

可以从 Microsoft 获得受支持的修复程序。 然而,此修补程序仅用于解决本文中描述的问题。 仅对出现这一特定问题的系统应用此修补程序。 此修补程序可能会接受进一步的测试。 因此,如果这个问题没有对您造成严重的影响,我们建议您等待包含此修复程序的下一个软件更新。 若要从 MSDN 代码库中下载此修补程序,请访问下面的 Microsoft 网站: 回答 5: 适用于 Windows Server 2016 和 Windows 10 版本 1709 的 Windows Server 容器映像的更新包含针对这组漏洞的缓解措施,不需要进行额外的配置。 MSDN 代码库显示获取此修复程序的语言。 如果看不到列出的语言,这是因为代码库的资源页不可用这种语言。 回答 5: 适用于 Windows Server 2016 和 Windows 10 版本 1709 的 Windows Server 容器映像的更新包含针对这组漏洞的缓解措施,不需要进行额外的配置。 如果出现其他问题或需要任何故障诊断时,您可能需要创建单独的服务请求。 对于不符合此特定的修补程序的其他支持问题和事项将照常收取费用。 有关 Microsoft 客户服务和支持电话号码的完整列表,或要创建单独的服务请求,请访问下面的 Microsoft 网站: 您还可以通过访问下面的 Microsoft 网站下载此修补程序:

先决条件

若要应用此修补程序,您必须安装的 Visual Studio 2010。

重启要求

不需要应用此修补程序后,重新启动计算机。

修补程序替换信息

此修补程序不替换任何其他修补程序。

文件信息

此修补程序的英文版具有下表中列出的文件属性(或较新的文件属性)。 这些文件的日期和时间按协调世界时 (UTC) 列出。 在查看文件信息时,文件时间将转换为本地时间。 要了解 UTC 与本地时间之间的时差,使用在控制面板中的日期和时间项的时区选项卡。
文件名文件版本文件大小日期时间平台
C2.dll16.0.30319.3452,510,14401-Aug-201023:42x86
C2.dll16.0.30319.3452,588,48001-Aug-201023:42x86
C2.dll16.0.30319.3452,630,97601-Aug-201023:42x86
C2.dll16.0.30319.3452,977,08801-Aug-201023:42x64
C2.dll16.0.30319.3457,351,61601-Aug-201023:42IA-64

解决方法


若要变通解决此问题,请不要在生成项目时使用/O2编译器选项。

状态


Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。