[2]
�@
int **f_memo(int **array){
//メモリ確保
array = (int **)malloc(sizeof(int) * (4));
//メモリ確保失敗
if(array == NULL){
printf("メモリの領域確保に失敗しました。\n");
free(array);
}
return array;
}

�A
void main(void){
  int **array;
  array = f_memo(array);
  free (array);
  if(array == NULL){
  printf("メモリを開放しました。\n");
  }
}

�@から確保したメモリを�Aで受け取って開放したいのですが上手くいきません。
ポインタが良くわからないので解説をお願いします。
[3] Windows2000
[4] 期限: [無期限]