Discussione: [C] Funzione free
View Single Post
Old 29-04-2005, 17:51   #4
D4rkAng3l
Bannato
 
Iscritto dal: Mar 2004
Cittā: Roma
Messaggi: 2682
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
D4rkAng3l č offline   Rispondi citando il messaggio o parte di esso