VS中编译及运行时常见的错误类型&常用快捷键

一、Visual Studio 常见错误

1、添加_CRT_SECURE_NO_WARNINGS

error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

如下:

#define _CRT_SECURE_NO_WARNINGS

或者是在:

在文件开头添加 #define _CRT_SECURE_NO_WARNINGS

在 项目->属性->C/C++->预处理器->预处理器定义中添加_CRT_SECURE_NO_WARNINGS

2、error C4703:

问题描述
在用VS2013编译时出现下面的错误:error C4703: 使用了可能未初始化的本地指针变量“xxx”

问题分析:在VS2013创建项目时,会有一个勾选项,叫做“安全开发生命周期(SDL)检查”,这个东西是微软在VS2013新推出的东西,为了是能更好的监管开发者的代码安全,如果勾选上这一项,那么他将严格按照SDL的规则编译代码,会有一些以前常用的函数无法通过编译,比如在VS2010中的scanf是warning那么在VS2013中就是error了。

解决方法:
有一个选择打开和关闭SDL检查的位置就是:项目属性->配置属性->C/C++->SDL检查,选测是或者否
此时我们选择”否”,则上面的那个错误就不会出现了。或者将指针变量初始化为nullptr,也可以解决。

3、 C3861    “system”: 找不到标识符    

关于“system”: 找不到标识符问题和“包括”/“排除”设置禁用了加载功能的问题

这个问题主要是使用system("pause");时造成的,

可以删除或者注释这个语句试试,解决办法:

1.添加头文件stdlib.h

2.添加iostream.h

4、 0xC0000005: 读取位置 xxx时发生访问冲突

一般是访问了不属于自己的内存空间;

比如说:1、数组越界了;2、指针在使用前被提前释放;

常见的溢出主要有:
1、内存分配未成功,却使用了它。
常用解决办法是,在使用内存之前检查指针是否为NULL。如果指针p 是函数的参数,那么在函数的入口处用assert(p!=NULL)进行检查。如果是用malloc 或new 来申请内存,应该用if(p==NULL)或if(p!=NULL)进行防错处理。

2、内存分配虽然成功,但是尚未初始化就引用它。
内存分配成功并且已经初始化,但操作越过了内存的边界。
例如在使用数组时经常发生下标“多1”或者“少1”的操作。特别是在for 循环语句中,循环次数很容易搞错,导致数组操作越界。

3、使用free 或delete 释放了内存后,没有将指针设置为NULL。导致产生“野指针”。
程序中的对象调用关系过于复杂,实在难以搞清楚某个对象究竟是否已经释放了内存,此时应该重新设计数据结构,从根本上解决对象管理的混乱局面。
不要忘记为数组和动态内存赋初值。防止将未被初始化的内存作为右值使用。

 

 

 

 

二、Visual Studio 常用快捷键

1、代码注释和取消注释

注释:ctrl+k, ctrl+c

取消注释:ctrl+k,ctrl+u

2、格式化代码:

ctrl+k,ctrl+f

3、代码段缩进

增加缩进:选中代码区域,点击Tab
减少缩进:选中代码区域,点击Shift+Tab

 

参考链接:

VS常用预处理器设置

error C4703: 使用了可能未初始化的本地指针变量“xxx”

VS关于LINK2019无法解析的错误的分析及其解决

关于“system”: 找不到标识符 的问题

如何在Visual Studio中自动格式化代码?

在 Visual Studio 中设置当发生某个特定异常或所有异常时中断

C++“读取位置 0x****** 时发生访问冲突”的可能原因

没有躲过的坑--0xC0000005: 读取位置 xxx时发生访问冲突

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值