VC++のdeleteはかなりいい加減なポインタを渡しても落ちない。
newやmallocで確保したアドレスのリストを持っててそれと一致しないと無視という構造で
複数回deleteしようが、nullポインタをdeleteしようが、
文字列リテラルへのアドレスをdeleteしても落ちない。

>デストラクタでヒープ破壊が起きて例外が来るんだが
の状況判断が根本的に間違ってると予想するよ。

どこかでnameのポインタをそのまま外部に渡してるとか
さらしてないところでnameをいじってるとかそんなところだろ。