| Как выровнять (align) размер памяти на 4 байта? |   | 
	| Добавил(а) microsin | 
| Выравнивать размер памяти нужно тогда, когда необходимо выделить буфер, чтобы в него точно уложилось целое количество групп байт. Например, микроконтроллер оперирует 32-битными словами (4 байта), и может работать только с такой порцией данных (у меня так получилось с портом SSC на AT91SAM7X256 - передающий регистр SSC_THR имеет разрядность 32 бита, и порт SSC передает зараз 4 байта). Таким образом, для организации буфера передачи необходимо выделить такое количество байт, чтобы это количество нацело делилось на 4. Делается это очень просто, но неочевидным образом. Пусть length - минимальное невыровненное количество байт, которое требуется для данных. Тогда выравнивание на 4 достигается добавлением нужного количества байт по следующему алгоритму:   
    length +=  3;       // добавляем 3 к length
    length &= ~3;       // сбрасываем 3 младших бита length
 [Ссылки] 1. IAR EW ARM: выравнивание полей в структурах. |