Вы не можете вызвать конструктор указанным вами способом. Вместо этого вы можете сделать это с помощью place-new (например, ваш код также указывает):
new (anObject) AnObject();
Этот код гарантированно будет определен, если ячейка памяти по-прежнему доступна - как и должно быть в ваш случай.
(я удалил часть о том, является ли это спорным кодом или нет - он четко определен. Полная остановка.)
Кстати, Брок прав: как реализация delete
не фиксирована - это not так же, как вызов деструктора, за которым следует free
. Всегда парные вызовы new
и delete
, никогда не смешивайте один с другим: , который не определен.