定義范圍越界問題產生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;
}
//這樣定義的區間總要比需求的區間大一點,消除了警告。