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