ローカル変数はスタック領域に確保される。一方malloc()で確保したメモリは ヒープ領域に確保される。ヒープ領域に確保したメモリはfreeで開放する必要 がある。

#include <stdlib.h>
#include <stdio.h>

int main(void) {

  char foo;
  foo = 0;

  char *bar;
  bar = (char *) malloc(1);
  *bar = 0;

  free(bar);

  printf("OK\n");
  return 0;
}