La funzione free non mi pare liberi la memoria.
A me, questo programma mi stampa il valore allocato in precedenza.. :master:

codice:
#include <stdio.h>

int main()
{

  int *array;
  array = (int *) malloc(5*sizeof(int));
  *array=1;
  *(array+1)=2;

  free(array);
  printf("%d", *(array+1));



  getch();
  return 0;
}