繁体   English   中英

检测到堆栈崩溃。 这是什么意思,我该如何解决?

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM