失敗したとき NULL を返しつつ 「引数で渡したポインタは開放されない」
あたりに引っかかりを感じてるんでない?

NULL 返すなら 引数で渡したポインタを開放しろと?
※ 使いにくいかもなぁ…