读书人

visual studio 2012 调试C语言碰到的中

发布时间: 2013-03-01 18:33:02 作者: rapoo

visual studio 2012 调试C语言遇到的中断,希望指教
visual studio 2012 调试C语言碰到的中断,希望指教


int _tmain(int argc, _TCHAR* argv[])
{
int a[20],c[5],i,n=0,x;
scanf_s("%d",&x,1);
while(x!=-1)
{
if(x>=0&&x<=4)
a[n++]=x;
scanf_s("%d",&x,1);
}
for(i=0;i<5;i++)
c[i]=0;
for(i=0;i<5;i++)
c[a[i]]++;
printf("The result is:\n");
for(i=0;i<5;i++)
printf("%4d",c[i]);
printf("\n");
}

visualstudio2012异常中断
[解决办法]
while(x!=-1)
{
if(x>=0&&x<=4)
a[n++]=x;//非常容易导致越界
scanf_s("%d",&x,1);
}


[解决办法]
输入-1 第一个while没进
for(i=0;i<5;i++)
c[a[i]]++;

a[]没赋值 可能越界吧
[解决办法]
scanf_s("%d",&x,1);

1改大一点。 1表示只能输入一个字符。
[解决办法]
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。

[解决办法]
for(i=0;i<5;i++)
c[a[i]]++;
此处越界了,a数组没有初始化,为乱码超出c数组的长度了
[解决办法]
数组越界问题。






[解决办法]
判断是否越界访问,可以在数组的最后一个元素之后对应的地址处设置数据改变断点。

读书人网 >C++

热点推荐