簡體   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