程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 內存越界警告問題,內存越界警告

內存越界警告問題,內存越界警告

編輯:關於C語言

內存越界警告問題,內存越界警告


定義范圍越界問題產生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;

}

//這樣定義的區間總要比需求的區間大一點,消除了警告。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved