[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