症状
请考虑以下情形:
- 您有一个 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 产品中存在问题。