new-deleteとnew[]-delete[]の対応は神聖不可侵。犯すべからず。

あとvoid*ではdeleteできません。 どのデストラクタ呼んでいいのか判らんでしょう。
// 技術的な可能不可能の話で言えば、vtbl持ってるクラスのインスタンスならvoid*でもdeleteできそうだけど、
// void*ポインタからvtbl持ってるか判別はできないのでやっぱり無理。