[c] - Problema con free() in VS2015

di Anonimizzato18917 il
20 risposte

20 Risposte - Pagina 2

  • Senza +1 è *sbagliato*

    La fir controlla ad ogni giro, non dentro al suo corpo.
  • Ora il programma funziona dopo aver reinstallato VS.
    Ho aggiunto il controllo di frase per verificare se il puntatore punta a NULL adf inizio funzione,

    Per la for:
    i++;
    viene eseguito solo se

    frase == ' ' && frase[i + 1] == ' ' ;

    quindi il valore di i non sforerebbe mai strlen(frase), quindi teoricamente non andrei a pescare oltre la dimensione della stringa.
    Per questo non ho messo altri controlli
  • Se durante la for arrivi all'ultimo carattere, [i+1] a cosa punta?
  • Se i è l'ultimo carattere, sarà uguale a strlen(frase)-1 (avevo modificato dimFrase nel frattempo), quindi non dovrebbe "calcolarsi" i+1 perchè esce dal for? o sto sbagliando?
  • Ti ripeto ... il controllo della for viene fatta solo ad ogni giro, non ad ogni riga interna ... Se internamente al corpo di una for utilizzi [i+100] è ovvio che commetti un grande errore.
  • Ho fatto vari prove col Debug... quando si arriva all'ultimo carattere frase[ i+1] non viene mai eseguita.

    se per maggiore sicurezza mi consigli di mettere (ad esempio)

    if( strlen(frase) <= (i + 1) ) break;
    prima di usare frase[i+1]
    ok, seguo il suggerimento.
Devi accedere o registrarti per scrivere nel forum
20 risposte