LINUX.ORG.RU

История изменений

Исправление 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 в обязательном порядке.