Здравствуйте, uzhas, Вы писали:
AG>>К уже сказанному можно добавить, что корректное освобождение памяти, выделенной new, при исключении из конструктора — это единственная причина, почему при написании своей версии оператора new следует написать и свою версию оператора delete.
U>мне кажется, что вы сморозили чушь
да.
я имел ввиду
почему при написании своей
формы оператора new следует написать и свою
форму оператора delete.
т.е. допустим
void* opertor new(size_t size, mytag& tag);
void opertor delete(void* p, mytag& tag); // вызыается только либо явно,
// либо при исключении в конструкторе после вызова new выше.
mytag tag;
X * x = new (tag) X();
delete x; // стандартный operator delete, а не своя форма.
delete (tag) x; // такого не бывает.