内存越界警告问题

定义范围越界问题产生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;

}

//这样定义的区间总要比需求的区间大一点,消除了警告。

posted @ 2015-11-19 14:15  金猫咪  阅读(434)  评论(2)    收藏  举报