error C4703: 使用了可能未初始化的本地指针变量“db”
来源:互联网 发布:jquery.jsoncookie.js 编辑:程序博客网 时间:2024/06/08 15:22
在编译caffe的Windows版本时,遇到一个奇怪的问题提示:error C4703: 使用了可能未初始化的本地指针变量“db”
网上查阅资料后找到了相应的解决方法。可参考: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。
也就是在编译的时候,当SDL检查启用时,编译器会严格检测缓冲区的溢出,并且会在delete某个指针时,自动为这个指针定义一个非有效的值,防止在delete以后仍用到这个指针时出错。还有就是会在你定义一个对象时,自动为这个对象赋值零。
从这些功能来看,有些功能还是不错的,不但方便了程序员使用也增强了程序的健壮性,但是对老版本程序的兼容就会出现问题,以前程序中编译通过的内容也许在VS2012中就没有办法通过。
问题解决方法:
有一个选择打开和关闭SDL检查的位置就是:项目属性->配置属性->C/C++->SDL检查,选测是或者否。
此时我们选择”否”,则上面的那个错误就不会出现了
方案2:
变量都要初始化一下。。。。。。。。。
养成好习惯。。
int *p=NULL;
安全起见,确保已经初始化。
1)用NULL初始化。
#include <malloc.h>
int main(int argc, char* argv[])
{
int* p = NULL;
。。。。。
if(p){
......
}
return 0;
}
2)用有效地址初始化
2.1)变量地址初始化。
#include <malloc.h>
int main(int argc, char* argv[])
{
int a;
int* p =&a;
if(p){
......
free(p);
}
return 0;
}
2.2) 为指针,分配内存。
#include <malloc.h>
int main(int argc, char* argv[])
{
int* p = malloc(sizeof(int));
if(p){
......
free(p);
}
return 0;
}
实际上有点多余。
- error C4703: 使用了可能未初始化的本地指针变量“db”
- error C4703: 使用了可能未初始化的本地指针变量“db”
- error C4703: 使用了可能未初始化的本地指针变量
- error C4703: 使用了可能未初始化的本地指针变量“xxx”
- error C4703: 使用了可能未初始化的本地指针变量
- vs2008 使用了未初始化的msg变量
- 未初始化的指针
- 变量未初始化的可能性
- Run-Time Check Failure #3 使用未初始化的变量
- O0 下未初始化,未使用的局部变量也会被优化
- 成员变量指针未初始化,异常处理对象析构
- C++使用未初始化的指针和赋值为0的指针
- c#出错:使用了未赋值的局部变量weekStr
- 变量未初始化引起的release错误
- 未初始化的变量引起运行问题
- C++未被初始化的局部变量
- 未初始化和非法的指针
- 未初始化和非法的指针
- 文件系统之FastDFS
- UVALive 7457 Discrete Logarithm Problem
- 用c++程序向百度apistore中发送消息获得天气等信息
- activity间跳转简单方式
- 简单强大的Android内存泄漏检测工具 LeakCanary
- error C4703: 使用了可能未初始化的本地指针变量“db”
- Android Studio中改变字体大小
- React Native之React速学教程(下)
- C++学习2
- hash解决冲突之---平方探测
- UIScrollViewDelegate 代理方法和表格的Delegate 方法冲突
- angularjs的使用:路由(4)
- C语言的良好编程习惯
- OC-KVC/KVO