引用: C/C++ セキュアコーディング 第2版 by Robert C. Seacordら
strdup()は文字列へのポインタを受け取り、新しく確保したメモリに複製した文字列へのポインタを返す。このメモリを解放するためには、戻り値のポインタを指定してfree()を実行すればよい。
...
ISO/IEC TR 24731-2[ISO/IEC TR 24731-2:2010]で定義されているが、C99にもC11にも含まれていない。
http://fernweh.jp/b/c-allocation/#id-3
にサンプルコードが掲載されている。
ideoneにて実際にコーディングしてみた。