Quote:
Originariamente inviato da AnonimoVeneziano
prima di tutto la sintassi č sbagliata.
A free() devi passare un puntatore , non un dato.
facendo "free(puntatore[i]);" passi il valore contenuto in "puntatore[i]" alla funzione free() che cercherā di liberare la memoria all' indirizzo di memoria indicato da puntatore[i] (e quindi 1, 2, 3 , 4 , 5 ,6 ... strano che non ti sia andato in segmentation fault) .
per liberare tutto l'array č sufficiente dare "free(puntatore);" e dovrebbe andare.
In ogni caso c'č la possibilitā che i valori rimangano in memoria e che quindi visualizzi ugualmente il valore. Infatti free() non cancella la memoria, semplicemente la rende disponibile per un altro programma che ne abbia necessitā. Comunque accedere a una locazione di memoria non allocata come fai nella riga :
printf("%d", puntatore[2]);
a seconda del sistema operativo potrebbe portare a un segmentation fault.
Ciao
Ciao
|
mmm grazie...ora provo...la cosa strana č che sul McGrowHill faceva come avevo scritto io...poi vi posto il suo esempio