Что такое «известное неверное значение указателя»?C++

Программы на C++. Форум разработчиков
Anonymous
Что такое «известное неверное значение указателя»?

Сообщение Anonymous »

В этом ответе на этот вопрос было отмечено, что:

Если вы собираетесь «очистить» указатель в 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

Вернуться в «C++»