>ptr == NULL なのがプログラムの設計としてまずい兆候なんだが

だれからそんな妄想を習ったのだ。
そもそもCのfreeやC++のdeleteがなぜぬるぽの時何もしない仕様になったかといえば
ぬるぽの時にわざわざ分岐を書かなくてすむという現場の要請があったからなのだ。