[英]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.