[Tech] OT - Programmazione C
Valerio Montagnani
tech@vmontagnani.it
Mer 18 Feb 2004 18:20:32 CET
Ciao a tutti.
Ho provato a scrivere un programmino che allocasse dinamicamente un po' di memoria, stampasse indirizzo e contenuto di una cella e infine liberasse la RAM allocata precedentemente. Ho aggiunto, dopo la funzione free, una printf che avrebbe dovuto stampare i valori della cella di ram ottenuti prima di aver liberato la memoria. Mi sarei aspettato un errore o un risultato casuale, dato che quella locazione sarebbe dovuta essere vuota, mentre il computer mi ha restituito gli stessi valori di prima.
E' possibile che abbia sbagliato a liberare la ram?
#include <stdio.h>
float *buff[10];
main() {
if ((buff[10]=(float *)malloc(10)))==NULL) {
printf("Errore di allocazione.");
exit(1);
}
printf("%p %d\n",&buff[5],buff[5]);
free(buff);
printf("%p %d\n",&buff[5],buff[5]);
}
Grazie, Vale
--
Valerio Montagnani (Lug-Account) <tech@vmontagnani.it>
pub 1024/C7E4BC57 sub 2048g/0E170155
Key fingerprint = D5A4 EDFC 060C 5BD6 E2DD 8252 3B67 C1EB C7E4 BC57
Maggiori informazioni sulla lista
flug-tech