error C4703: 使用了可能未初始化的本地指针变量“db”
2015-11-05 13:41
477 查看
在编译caffe的Windows版本时,遇到一个奇怪的问题提示:error C4703: 使用了可能未初始化的本地指针变量“db”
网上查阅资料后找到了相应的解决方法。可参考:http://www.vcerror.com/?p=1514
问题产生的原因:
在VS2012创建项目时,会有一个勾选项,叫做“安全开发生命周期(SDL)检查”,这个东西是微软在VS2012新推出的东西,为了是能更好的监管开发者的代码安全,如果勾选上这一项,那么他将严格按照SDL的规则编译代码,会有一些以前常用的函数无法通过编译,比如在VS2010中的scanf是warning那么在VS2012中就是error了。
查看MSDN中对SDL的描述,SDL检查会视以下告警为错误:
也就是在编译的时候,当SDL检查启用时,编译器会严格检测缓冲区的溢出,并且会在delete某个指针时,自动为这个指针定义一个非有效的值,防止在delete以后仍用到这个指针时出错。还有就是会在你定义一个对象时,自动为这个对象赋值零。
从这些功能来看,有些功能还是不错的,不但方便了程序员使用也增强了程序的健壮性,但是对老版本程序的兼容就会出现问题,以前程序中编译通过的内容也许在VS2012中就没有办法通过。
问题解决方法:
有一个选择打开和关闭SDL检查的位置就是:项目属性->配置属性->C/C++->SDL检查,选测是或者否。
此时我们选择”否”,则上面的那个错误就不会出现了
网上查阅资料后找到了相应的解决方法。可参考:http://www.vcerror.com/?p=1514
问题产生的原因:
在VS2012创建项目时,会有一个勾选项,叫做“安全开发生命周期(SDL)检查”,这个东西是微软在VS2012新推出的东西,为了是能更好的监管开发者的代码安全,如果勾选上这一项,那么他将严格按照SDL的规则编译代码,会有一些以前常用的函数无法通过编译,比如在VS2010中的scanf是warning那么在VS2012中就是error了。
查看MSDN中对SDL的描述,SDL检查会视以下告警为错误:
/sdl 启用警告 | 等效的命令行开关 | 描述 |
---|---|---|
C4146 | /we4146 | 一元负运算符应用于无符号类型,从而导致无符号结果。 |
C4308 | /we4308 | 一个负整型常数转换为无符号类型,从而导致一个可能无意义结果。 |
C4532 | /we4532 | __finally /finally中的关键词,使用continue, break 或 goto在异常终止块未定义行为。 |
C4533 | /we4533 | 初始化变量的代码不会执行。 |
C4700 | /we4700 | 使用未初始化的局部变量。 |
C4703 | /we4703 | 对一个潜在的未初始化的局部指针变量的使用。 |
C4789 | /we4789 | 当使用时,请缓冲区溢出特定 C 运行时 (CRT) 函数。 |
C4995 | /we4995 | 使用函数的标deprecated。 |
C4996 | /we4996 | 使用函数的标记作为deprecated。 |
从这些功能来看,有些功能还是不错的,不但方便了程序员使用也增强了程序的健壮性,但是对老版本程序的兼容就会出现问题,以前程序中编译通过的内容也许在VS2012中就没有办法通过。
问题解决方法:
有一个选择打开和关闭SDL检查的位置就是:项目属性->配置属性->C/C++->SDL检查,选测是或者否。
此时我们选择”否”,则上面的那个错误就不会出现了
相关文章推荐
- 5.php File文件操作,Php的Clas,sql 初接触
- input上传文件显示图片缩略图
- spm完成dmp在windows系统上导入详细过程
- Android layout、onLayout 一些简要说明(转)
- 值得收藏--GitHub Top 20 开源项目
- C# 连接Paradox DB
- linux vim 命令
- 软件工程与计算机科学的区别
- Android draw、onDraw、dispatchDraw、invalidate、computeScroll 一些简要说明(转)
- git error
- jquery日历插件
- MYSQL用户权限管理GRANT使用
- Spark1.51 本地启动了Master和一个Slave后,在Spark-Shell里跑,看出sc.textFile找数据的stacktrace
- 修改Oracle用户密码
- 图像处理的三个基本操作——灰度化、锐化、平滑
- C语言:自己动手查看float以及double类型的变量2.5在内存中的存储方式。
- c++ 测试框架简介
- VC6.0内存泄露检测工具
- hdoj House Building 5538 (数学几何&&搜索)
- 浅析关于ObjectC中的自定义初始化方法和便利构造器以及重写父类的description方法的理解