码迷,mamicode.com
首页 > 其他好文 > 详细

Visual Studio Error

时间:2016-04-20 21:36:53      阅读:651      评论:0      收藏:0      [点我收藏+]

标签:

Visual Studio Error


Debug Error 错误类型


#0表示调用约定错误

可以考虑在指针前面加上_stdcall。Dll库更新了,exe未更新也会报此错误。

#2表示栈溢出

-S是Stack around the variable … was corrupted的缩写

把12个浮点数数分配给整数数组的时候遇到了这个错误。错误一般都是指数组越界。

技术分享

Stack around the variable … was corrupted的意思就是栈溢出。

技术分享

可以看到,j小于12来做条件的时候,数组发生了栈溢出。原因是我定义的数组只有11个位置,如果j达到11的时候array[11]是不存在的,然而这种情况不同于未初始化的变量因为内存中数组只不过是一个位置与后面固定的长度,vs2015不会探测后方的内存是否在数组范围之内。导致的结果就是发生debug error#2错误。

技术分享

#3表示使用了未初始化的变量

-T是The variable … is being used without being initialized的缩写

技术分享

-T是The variable … is being used without being initialized的缩写。在switch case(或其他情况),case后方忘了break;就会出现#3报错。很明显day=31后面忘了break; 英文提示:the variable is being used without being defined(initialized)说的就是变量未定义,初始化的意思。

技术分享

switch-case在内存中的运算方法和if-else是相同的。但是对于switch-case来说系统执行单减循环直至为零.

 

安装Visual Studio时登录等不上去的方法


  • 退了360!退了360!退了360!
  • 重新启动电脑
  • 重新打开安装程序
  • 把DNS修改为主选:114.114.114.114备选:8.8.8.8(参见360DNS优选)

分支条件没覆盖,不是所有分支都有返回值


什么叫分支条件没覆盖呢?比如if-else,两选一,肯定覆盖。比如if-else if,如果两个条件没满足,还有第三种可能,如果这种可能性处没有return,就认为没完全覆盖。

技术分享

系统会默认后方还有一个空的else,然而这个else并没有return值。所以出现了C4715错误

 

项目加载失败。提示:该项目需要用户手动输入。


技术分享

解决方法:

删除了原来的项目和文件夹,建立新的目录,问题即可解除

技术分享

无法打开……进行写入


这其实是因为上一次运行的时候没有关闭,把上一个窗口关了,重新运行就没问题了

技术分享

HANDLE hout的问题


技术分享

为什么gotoxy函数没起作用?

事实上,HANDLE就是HANDLE的类型,上图中的HANDLE hout在main函数中相当于从新声明了hout,这样的话,hout对于main()来说就是局部变量。根据函数中局部变量会直接屏蔽全局变量的原则,这个赋值是对局部变量来说的。而gotoxy函数调用的是全局变量,此时全局变量是空的,因此gotoxy函数不会生效。

解决方法:

按照正常的赋值方法,这样全局变量hout就被正常的赋值了,可以看到此时gotoxy函数已经发挥了作用。这样一来又省去了把所有函数都加上HANDLE hout参数的麻烦。

技术分享

 

warning MSB8028: The intermediate directory……


技术分享

这个问题,和代码没有关系。原因在于重复建立了两个project指向了一个目录。

解决方法:

把需要的cpp拷贝出来,然后把这个项目删了(连文件夹都删掉)然后重新建立一个项目。再把cpp拷贝回去(虽然可以不拷贝,但是为了稳定,建议放在原文件夹。)再次运行,错误消失。

fatal error C1301: error accessing program database D:\Document\CPP_subject\School_asignments\Sudoku\Release\7-b6.ipdb, invalid format, please delete and rebuild

技术分享

将模式改成x64,或者删除错误的文件

查错方法


如何判断数组越界?

技术分享

现在故意犯了个错误,让最大为12的数组循环到30

技术分享

程序崩溃,三号错误,表示数组越界。哪里越界?重新调试,但是这次只按F5。

 

技术分享

调试程序报警,下方表明了错误位置。

点击中断,查看详细情况。

技术分享

右侧明确的报出了出错的行数,而左侧则告知了异常位置,连内存地址都提供了出来。很明显i变成了随机数,month数组越界了。

说明一下,调试模式只会报出程序在哪一行终端,有时候错误的原因可能存在于其他位置,这个时候就要整理一下程序的思路沿着逻辑线索仔细查找。

技术分享

还有一点说明。修改之后如果还报同样的错误,有可能是上一次的小黑窗没关

 

外部文件的函数如何查错?

遵循原则,返回什么,打印什么。

技术分享

如果都是0,无法确定是那个0,就加几个自己认识的数字,就能快速区分出哪一个出的错。

 

Gotoxy函数失效?

Gotoxy函数无论如何也无法移动到指定位置,但是这一行的确执行了,原因是什么?

技术分享

这一行的确是执行了,原因在于gotoxy函数的目标地点超出了控制台窗口的大小,这个时候此函数执行失败,系统自动继续读取。

循环次数超过预期导致显示混乱

类似于控制台打印时发生不可预知的错误,打印超过边界倒置自动换行出现混乱的形况,可以采用_getch()+打印循环次数的方法

技术分享

采用类似方法可以把循环次数打印出来以及知道第几次循环出现了错误

 

技术分享

这样一来随着每一步打印,都会出现类似于脚注的行列循环次数信。

 

使用不同的数据多次测试应用程序

对于同一个程序需要输入多组不同的数据进行测试的情况,可以考虑在程序开头和结束加入清屏和goto(或while(!))语句。

while(!){ …… }

System不明确

某处输入system(“pause”);后其他所有cout均会提示cout不明确

技术分享

此时运行程序,不会提示任何错误

技术分享

但是报错依旧存在

解决方法:

在头文件处包含#include<cstdlib>

技术分享

问题得到解决

技术分享

 

原本正常的控制台界面打印颜色出现排版混乱

技术分享

错误的原因是因为控制台界面下方的中文输入法干扰了打印过程。

 
解决方法:
  1. 在进入正式打印结果的界面之前按shift(或其他按键)切换至英文输入法
  2. 规划窗口时为输入法预留一行空白,但不够美观

有空再配图

Visual Studio Error

标签:

原文地址:http://www.cnblogs.com/liutianchen/p/5414242.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!