定义范围越界问题产生Run-Time Check Failure #2 - Stack around the variable ‘******‘ was corrupted.警告
问题由来:
/*
*产生30个三位的随机数,十个一行进行输出。并且找到其中的素数,然后进行输出
*/
给出产生随机数的代码如下:
//产生随机数模块;
int intArray[30]; //定义一个整形的数组intArray[]来存储这三十个随机数;
int i; //定义一个全局变量i,用于循环使用;
for(i=1;i<=30;i++)
/*问题就出在黑体部分
*/
{
intArray[i]=(rand()%(1000-100))+100; //循环存储产生的随机数;
}
printf("产生的30个随机数如下所示:\n"); //打印一句话;
for(int i=1;i<=30;i++) //使用局部变量i将这个数组进行输出;
{
printf("%5d",intArray[i]);
if(i%10==0) //加入一个判断条件,使得每行只输出10个数字;
{
printf("\n");
}
eg:
int a[30];
for(int i=1;i<=30;i++)
{
a[i]=ranf()%100;
}
这样足够小的定义空间虽然节省了自身的空间值,减少了内存需求量。但是程序运行到循环30次之后就会出现越界的警告,
消除这样的警告最简单的办法就是将定义的数组空间足够大,至少不要和循环次数产生冲突。
修改成
eg:
int a[31];
for(int i=1;i<=30;i++)
{
a[i]=rand()%100;
}
//这样定义的区间总要比需求的区间大一点,消除了警告。
原文:http://www.cnblogs.com/GoldCat/p/4977509.html