LINUX.ORG.RU

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

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

а) правильный

Смысл этих выравниваний чтобы операции чтения/записи переменных были атомарными. Ну и ещё некоторые архитектуры (MIPS например) в принципе не умеют работать с некоторыми типами, если они не выровнены - генерируется ошибка. char выравнивается на границу байта потому что этому типу всё равно куском какого минимального размера и с какой границы его прочтут - все равно это будет сделано за 1 раз. А к массиву доступ осуществляется поэлементно, собственно, как и к массивам структур (из-за чего они и добиваются в конце пустыми полями, если необходимо). Последнее не значит, что структуры читаются/записываются целиком.

Исправление asaw, :

а) правильный

Смысл этих выравниваний чтобы операции чтения/записи переменных были атомарными. Ну и ещё некоторые архитектуры (MIPS например) в принципе не умеют работать с некоторыми типами, если они не выровнены - генерируется ошибка. char выравнивается на границу байта потому что этому типу всё равно куском какого минимального размера и с какой границы его прочтут - все равно это будет сделано за 1 раз. А к массиву доступ осуществляется поэлементно, собственно, как и к массивам структур (из-за чего они и добиваются в конце пустыми полями, если необходимо).

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

а) правильный Смысл этих выравниваний чтобы операции чтения/записи переменных были атомарными. Ну и ещё некоторые архитектуры (MIPS например) в принципе не умеют работать с некоторыми типами, если они не выровнены - генерируется ошибка. char выравнивается на границу байта потому что этому типу всё равно куском какого минимального размера и с какой границы его прочтут - все равно это будет сделано за 1 раз. А к массиву доступ осуществляется поэлементно, собственно, как и к массивам структур (из-за чего они и добиваются в конце пустыми полями, если необходимо).