[英]Stack smashing detected. What it means and how can I fix it?
數組中我想要的唯一元素是那些我要轉換為 1 的元素,但由於某種原因,當我在下部導航時,會發生此堆棧粉碎。
```
#include <stdio.h>
#define tam 12
int main(void) {
int i, j;
int matriz[tam][tam]={{0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0}};
int controle = 0, controle2 = 0;
for(i = 0; i<6;i++){
for(j=i;j<tam-i;j++){
matriz[tam-(i)][tam-(j+1)]=1;
matriz[i-1][j]=1;
}
}
for(i=0;i<tam;i++){
for(j=0;j<tam;j++){
printf("%i ", matriz[i][j]);
}
printf("\n");
}
}
```
`
```
當i = 0
時, matriz[tam-i]
將解析為matriz[12]
。 這是越界寫入,也是bug的來源
將for(i = 0; i<6;i++)
固定for(i = 1; i<6;i++)
應該可以工作,如果這是你想要的結果
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.