リスト1は、malloc関数で100バイト分を動的確保したプログラムの例です。3行目で、char型の*strを宣言し、4行目でmalloc関数を使って100バイト分だけメモリを確保しています。一通り見ると、メモリ解放を指示するfree関数がなく、メモリリークが起きています。例題プログラムなら何の問題もありませんが、規模が大きいプログラムでは、バグの温床になります。 Valgrindを実行すると、メモリリークを自動的に検出できます。図13を見てください。 下から5行目の「definitely lost: 100 bytes in 1 blocks」というメッセージがありますね。これは、メモリリークを起こしている際に出るメッセージです。Valgrindでは、このようにメモリリークを検出できます。mallocを使う場合は、free関数を使うことを徹底しましょう。「free(str);」を追加する