C言語のexit()にはクリーンアップルーチンが通常は組み込まれており、
free()しなくても確かにプログラム終了と同時にmalloc()で使っていた
ヒープ領域もろともOSに返却される

しかし、途中でfree()しないと動かないプログラムや環境もある事を忘れない事だ