本文共 583 字,大约阅读时间需要 1 分钟。
问题描述: 在用VS2013编译时出现下面的错误error C4703: 使用了可能未初始化的本地指针变量“xxx”
问题分析:
在VS2013创建项目时,会有一个勾选项,叫做“安全开发生命周期(SDL)检查”,这个东西是微软在VS2013新推出的东西,为了是能更好的监管开发者的代码安全,如果勾选上这一项,那么他将严格按照SDL的规则编译代码,会有一些以前常用的函数无法通过编译,比如在VS2010中的scanf是warning那么在VS2013中就是error了。 查看MSDN中对SDL的描述,SDL检查会视以下告警为错误:也就是在编译的时候,当SDL检查启用时,编译器会严格检测缓冲区的溢出,并且会在delete某个指针时,自动为这个指针定义一个非有效的值,防止在delete以后仍用到这个指针时出错。还有就是会在你定义一个对象时,自动为这个对象赋值零。
从这些功能来看,有些功能还是不错的,不但方便了程序员使用也增强了程序的健壮性,但是对老版本程序的兼容就会出现问题,以前程序中编译通过的内容也许在VS2013中就没有办法通过。 解决方法: 有一个选择打开和关闭SDL检查的位置就是:项目属性->配置属性->C/C++->SDL检查,选测是或者否。 此时我们选择”否”,则上面的那个错误就不会出现了。或者将指针变量初始化为nullptr,也可以解决。