LINUX.ORG.RU

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

Исправление firkax, (текущая версия) :

Стандарт вообще запрещает существование unaligned указателей, то есть, указателей на T, не выровненных на alignof(T).

Где ты такое прочёл? В той цитате про это не было, если что.

То есть, по сути, там написано, что вот такой код не приводит к неопределённому поведению для любого Type:

Не приводит. Только причём тут выравнивание? Обращение по неправильно выровненному адресу может быть проблемным для некоторых архитектур, но не более того. В частности, для x86 таких проблем нет. Фразу стоит переводить так: на архитектурах, где проц не умеет обращаться по невыровненному адресу слова, malloc будет возвращать только выровненные указатели. Кстати, сюда можно наверно приписать некоторые sse, но если -msse или 64-бит не указаны то нельзя.

В C89 то же самое :)

Я и не сомневался.

Сейчас ты начнёшь кричать, что стандарт тебе не стандарт, но вот простой пруф:

Это параноидальные настройки проверок.

Исходная версия firkax, :

Стандарт вообще запрещает существование unaligned указателей, то есть, указателей на T, не выровненных на alignof(T).

Где ты такое прочёл? В той цитате про это не было, если что.

То есть, по сути, там написано, что вот такой код не приводит к неопределённому поведению для любого Type:

Не приводит. Только причём тут выравнивание? Обращение по неправильно выровненному адресу может быть проблемным для некоторых архитектур, но не более того. В частности, для x86 таких проблем нет. Фразу стоит переводить так: на архитектурах, где проц не умеет обращаться по невыровненному адресу слова, malloc будет возвращать только выровненные указатели. Кстати, сюда можно приписать sse всякие, но если -msse не указано то нельзя.

В C89 то же самое :)

Я и не сомневался.

Сейчас ты начнёшь кричать, что стандарт тебе не стандарт, но вот простой пруф:

Это параноидальные настройки проверок.