Free() invalid pointe

di il
2 risposte

Free() invalid pointe

Ho dei problemi con i puntatori in particolare con la funzione free():
se scrivo il seguente codice la free() restituisce invalid pointer:

void main(){
char *t;
t=(char *)malloc(10*sizeof(char));
t="pippo";
printf("%s\n",t);
free(t);
}
Mentre con la strcpy(t,"pippo") al posto di t="pippo":

void main(){
char *t;
t=(char *)malloc(10*sizeof(char));
strcpy(t,"pippo");
printf("%s\n",t);
free(t);
}
sembra che tutto funzioni, ma non riesco a capire il motivo.
grazie mille.

2 Risposte

  • Re: Free() invalid pointe

    Spiegazione
    
    t=(char *)malloc(10*sizeof(char)); // supponiamo che l'indirizzo assegnato sia 1000
    t="pippo";  // quì l'indirizzo assegnato sarà un altro e non 1000.
    //sarà l'indirizzo che il SO ha assegnato alla stringa costante "pippo"
    
  • Re: Free() invalid pointe

    Grazie mille!
    chiarissimo!
Devi accedere o registrarti per scrivere nel forum
2 risposte