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