[c] - Problema con free() in VS2015

di il
20 risposte

20 Risposte - Pagina 2

  • Re: [c] - Problema con free() in VS2015

    Senza +1 è *sbagliato*

    La fir controlla ad ogni giro, non dentro al suo corpo.
  • Re: [c] - Problema con free() in VS2015

    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
  • Re: [c] - Problema con free() in VS2015

    Se durante la for arrivi all'ultimo carattere, [i+1] a cosa punta?
  • Re: [c] - Problema con free() in VS2015

    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?
  • Re: [c] - Problema con free() in VS2015

    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.
  • Re: [c] - Problema con free() in VS2015

    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