Re[3]: throw в конструкторе?
От: Alexander G Украина  
Дата: 31.12.09 13:13
Оценка: 1 (1)
Здравствуйте, 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; // такого не бывает.
Русский военный корабль идёт ко дну!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.