strdupってcでもc++でもfreeしなきゃダメなんですか?
deleteじゃダメですか?