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

应用对象
Visual Studio 2010

症状

请考虑以下情形:

  • 您有一个 Visual C++ 2010 项目。 项目源代码的结构或类超过 64 字节。
  • 为基于 x64 的平台生成项目,并使用 /O2 编译器选项。
  • 运行该应用程序。

在这种情况下,发生访问冲突,应用程序崩溃。

原因

出现此问题的原因是 Visual Studio 2010 基于 x64 的编译器通过将数据的分配对齐从 64 字节调整到 16 字节来优化代码。 因此,超过 64 字节的对象会出现内存问题。

解决方法

修补程序信息

Microsoft 提供了一个受支持的修补程序。 但此程序只用于解决本文中提到的问题。 仅将此修补程序应用于遇到此特定问题的系统。 此修补程序可能还会接受进一步的测试。 因此,如果这个问题没有对你造成严重影响,建议你等待下一个包含此修补程序的软件更新。

 若要从 MSDN 代码库下载此修补程序,请访问以下 Microsoft 网站:

http://code.msdn.microsoft.com/KB2280741
注意:MSDN 代码库显示了修补程序的可用语言版本。 如果未列出您的语言,这是因为代码库资源页面不适用于该语言。

注意 如果发生其他问题或需要进行任何故障排除,您应该另行创建服务请求。 对于此特定修补程序无法解决的其他支持问题和事项,将照常收取支持费用。 若要获取 Microsoft 客户服务和支持部门的完整电话号码列表或另行创建服务请求,请访问以下 Microsoft 网站:

http://support.microsoft.com/contactus/?ws=support 还可以通过访问以下 Microsoft 网站下载此修补程序:

https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=31433

先决条件

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

重启要求

应用修补程序后,无须重启计算机。

修补程序替代信息

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

文件信息

  此修补程序的英文版具有下表列出的文件属性 (或更高版本的文件属性) 。 这些文件的日期和时间以协调世界时 (UTC) 格式列出。 在查看文件信息时,文件时间将转换为本地时间。 要了解 UTC 与本地时间之间的时差,请使用
时区
  选项卡位于
日期和时间
  控制面板中的项。

文件名 文件版本 文件大小 日期 时间 平台
C2.dll 16.0.30319.345 2,510,144 2010 年 8 月 1 日 23:42 x86
C2.dll 16.0.30319.345 2,588,480 2010 年 8 月 1 日 23:42 x86
C2.dll 16.0.30319.345 2,630,976 2010 年 8 月 1 日 23:42 x86
C2.dll 16.0.30319.345 2,977,088 2010 年 8 月 1 日 23:42 x64
C2.dll 16.0.30319.345 7,351,616 2010 年 8 月 1 日 23:42 IA-64

解决方法

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

状态

Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。