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