Если вы собираетесь «очистить» указатель в dtor, другой идиома была бы лучше - установите указатель на известное неверное значение указателя.
а также, что деструктор должен быть:
Код: Выделить всё
~Foo()
{
delete bar;
if (DEBUG) bar = (bar_type*)(long_ptr)(0xDEADBEEF);
}
Во-первых, как можно установить указатель на заведомо неверное значение указателя? Как вы можете установить указатель на адрес, который, как вы можете быть уверены, не будет выделен?
Во-вторых, что делает: if (DEBUG) bar = (bar_type*)(long_ptr)(0xDEADBEEF ); даже делать? Что такое ОТЛАДКА? Я не смог найти макрос с таким названием. Кроме того, что такое long_ptr? что он делает?
Спасибо.
Подробнее здесь: https://stackoverflow.com/questions/786 ... nter-value