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