Pagina 1 di 1

[RISOLTO] stack smashing detected

MessaggioInviato: 18/01/2018, 22:49
da lcproductions
Salve a tutti,
ho creato un programma che calcola le tabelline da 1 a 10 .
Il programma funziona, tuttavia quando esce stampa il messaggio
Codice: Seleziona tutto
*** stack smashing detected ***: <unknown> terminated
Annullato (core dump creato)


Dalle ricerche che ho fatto, è una protezione che gcc usa per evitare i buffer overflow .
Analizzando il programma, però, non riesco a capire dove si trovi il problema.
Vi lascio il codice sorgente. Grazie in anticipo a quanti risponderanno.
Codice: Seleziona tutto
/*
Calcolo delle tabelline
*/

#include <stdio.h>

int main() {
  int tab[10][10];
  int num,fatt; // num = numero della tabellina; fatt = numero per cui moltiplicare num. Es. se num = 5 e fatt = 7, allora num*fatt = 35
  for (num=1;num<=10;num++) {
    if (num == 1) {
      printf("--------------- TABELLINA DELL\' UNO -------------\n");
    }else if(num == 2){
      printf("--------------- TABELLINA DEL DUE -------------\n");
    }else if (num == 3) {
      printf("--------------- TABELLINA DEL TRE -------------\n");
    }else if(num == 4){
      printf("--------------- TABELLINA DEL QUATTRO -------------\n");
    }else if (num == 5) {
      printf("--------------- TABELLINA DEL CINQUE -------------\n");
    }else if(num == 6){
      printf("--------------- TABELLINA DEL SEI -------------\n");
    }else if(num == 7){
      printf("--------------- TABELLINA DEL SETTE -------------\n");
    }else if (num == 8) {
      printf("--------------- TABELLINA DELL\' OTTO -------------\n");
    }else if(num == 9){
      printf("--------------- TABELLINA DEL NOVE -------------\n");
    }else if (num == 10) {
      printf("--------------- TABELLINA DEL DIECI -------------\n");
    }
    for(fatt=0;fatt<=10;fatt++){
      tab[num][fatt] = num*fatt;
      printf("%d\n", tab[num][fatt]);
    }
  }
  return 0;
}

Re: stack smashing detected

MessaggioInviato: 19/01/2018, 7:11
da marcomg
Il for vai da 0 a 10, sono 11 numeri. Dovresti mettere < e basta e poi num*(fatt + 1)

Re: stack smashing detected

MessaggioInviato: 21/01/2018, 23:04
da lcproductions
Grazie mille, risolto.