修复︰ Visual C++ 2013年无法检测到缓冲区溢出或发出 C4789 警告

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。

点击这里察看该文章的英文版: 3170268
症状
根据 MSDN 库中,当使用 Visual C++ 2013 C/c + + 编译器编译 C 或 c + + 源代码 Visual C++ 2013年应检测某些缓冲区溢出情况下 (当然,只是那些可以在检测到编译时) 和发出 警告 C4789.

但是,某些缓冲区溢出不捕获了所有的优化设置 Visual C++ 2013,即使您已经安装了 Visual Studio 2013年更新 5。没有 C4789 发出警告的较早版本的 Visual C++ 2010年已经成功发出警告 C4789。

注意:安装此修复程序后,Visual C++ 2013年可以检测缓冲区溢出,并发出警告 C4789 版本的配置生成 (如果未使用/Od )。
原因
由于 Visual Studio 2013 C/c + + 编译器中存在的问题,会出现此问题。
解决方案

修补程序信息

下列文件已可从 Microsoft 下载中心下载:
下载立即下载此修补程序包。

有关如何下载 Microsoft 支持文件的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
119591 如何从在线服务获得 Microsoft 的支持文件
Microsoft 已对此文件进行病毒扫描。Microsoft 使用自该文件发布日期起可用的最新的病毒检测软件。该文件存储在安全增强型服务器上,帮助防止对文件进行任何未经授权的更改。

系统必备组件

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

注册表信息

若要使用此程序包中的修复程序,您不必对注册表进行任何更改。

重启要求

您不必应用此修复程序后重新启动计算机。

修补程序替换信息

此修补程序不替代以前发布的修补程序。
替代方法
若要变通解决此问题,请使用/Oi编译器开关或代码分析来检测缓冲区溢出在编译时的多个实例。
状态
Microsoft 已经确认这是"适用于"一节中列出的 Microsoft 产品中的问题。

警告:本文已自动翻译

属性

文章 ID:3170268 - 上次审阅时间:07/21/2016 21:02:00 - 修订版本: 1.0

Visual Studio 2013 Community Edition, Microsoft Visual Studio 2013 Software Development Kit

  • kbqfe kbsurveynew kbfix kbexpertiseadvanced atdownload kbmt KB3170268 KbMtzh
反馈