0xDEADBEEF эквивалент для 64-битной разработки?
Для разработки C ++ для 32-битных систем (будь то Linux,Mac OS или Windows,PowerPC
или x86) Я инициализировал указатели, которые в противном случае были бы неопределенными (например, они не могут сразу получить правильное значение), например так:
int *pInt = reinterpret_cast(0xDEADBEEF);
(Чтобы сохранить набор текста и существоDRY правая часть обычно бывала постоянной, например, BAD_PTR.)
Если pInt разыменовывается до того, как он получит правильное значение, то он будет аварийно завершать работу в большинстве систем (вместо сбоя намного позже, когда некоторая память перезаписывается или идет очень длинный цикл).
Конечно, поведение зависит от базового оборудования (получение 4-байтового целого числа по нечетному адресу 0xDEADBEEF от пользовательского процесса может быть совершенно допустимым), но сбой был на 100% надежным для всех систем, которые я разработал до сих пор ( Mac OS68xxx, Mac OS PowerPC, Linux Redhat Pentium, Windows GUI Pentium, консоль Windows Pentium). Например, в PowerPC запрещено (ошибка шины) получать 4-байтовое целое число с нечетного адреса.
Что хорошего в этом для 64-битных систем?