首页 > 其他 > 详细

内存越界警告问题

时间:2015-11-19 14:58:57      阅读:287      评论:0      收藏:0      [点我收藏+]

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!