История изменений
Исправление proud_anon, (текущая версия) :
Для этого и существует неопределённое поведение: в одних системах оно работает так, а в других иначе. Но разработчики clang'а считают, что «неопределённое поведение» — это индульгенция на генерацию разного бреда вместо нормального кода.
Ты путаешь undefined behavior с implementation-defined behavior. Undefined behavior — это индульгенция на генерацию бреда. Implementation-defined behavior (например, результат каста указателя в целое число) должно быть определено в документации к компилятору.
Что же касается обращения к адресу 0 в реальном режиме, то по стандарту, ЕМНИП, pointer == 0
истинно если и только если pointer == NULL
. Но стандарт, ЕМНИП, отнюдь не утверждает, что ((int*) sizeof(int)) - 1 == NULL
в обязательном порядке.
Исходная версия proud_anon, :
Для этого и существует неопределённое поведение: в одних системах оно работает так, а в других иначе. Но разработчики clang'а считают, что «неопределённое поведение» — это индульгенция на генерацию разного бреда вместо нормального кода.
Ты путаешь undefined behavior с implementation-defined behavior. Undefined behavior — это индульгенция на генерацию бреда. Implementation-defined behavior (например, результат каста указателя в целое число) должно быть определено в документации к компилятору.
Что же касается обращения к адресу 0 в реальном режиме, то по стандарту, ЕМНИП, pointer == 0
истинно если и только если pointer == NULL
. Но стандарт, ЕМНИП, отнюдь не утверждает, что (int*) sizeof(int) - 1 == NULL
в обязательном порядке.