История изменений
Исправление firkax, (текущая версия) :
Стандарт вообще запрещает существование unaligned указателей, то есть, указателей на T, не выровненных на alignof(T).
Где ты такое прочёл? В той цитате про это не было, если что.
То есть, по сути, там написано, что вот такой код не приводит к неопределённому поведению для любого Type:
Не приводит. Только причём тут выравнивание? Обращение по неправильно выровненному адресу может быть проблемным для некоторых архитектур, но не более того. В частности, для x86 таких проблем нет. Фразу стоит переводить так: на архитектурах, где проц не умеет обращаться по невыровненному адресу слова, malloc будет возвращать только выровненные указатели. Кстати, сюда можно наверно приписать некоторые sse, но если -msse или 64-бит не указаны то нельзя.
В C89 то же самое :)
Я и не сомневался.
Сейчас ты начнёшь кричать, что стандарт тебе не стандарт, но вот простой пруф:
Это параноидальные настройки проверок.
Исходная версия firkax, :
Стандарт вообще запрещает существование unaligned указателей, то есть, указателей на T, не выровненных на alignof(T).
Где ты такое прочёл? В той цитате про это не было, если что.
То есть, по сути, там написано, что вот такой код не приводит к неопределённому поведению для любого Type:
Не приводит. Только причём тут выравнивание? Обращение по неправильно выровненному адресу может быть проблемным для некоторых архитектур, но не более того. В частности, для x86 таких проблем нет. Фразу стоит переводить так: на архитектурах, где проц не умеет обращаться по невыровненному адресу слова, malloc будет возвращать только выровненные указатели. Кстати, сюда можно приписать sse всякие, но если -msse не указано то нельзя.
В C89 то же самое :)
Я и не сомневался.
Сейчас ты начнёшь кричать, что стандарт тебе не стандарт, но вот простой пруф:
Это параноидальные настройки проверок.