Когда я запускаю его, резервирует ли он FLASH_SECTOR_SIZE * 16 байт в памяти?
Нет.Тип uint16_t
имеет ширину 16 бит , а не 16 байт .Память действительно зарезервирована для массива, но ее размер составляет FLASH_SECTOR_SIZE * 2
байт.
Синтаксис __attribute__
, который вы представляете, не является частью стандартного C, поэтому его значение зависит от вашего компилятора, но я не вижучто бы ни было причиной, чтобы подумать, что массив фактически не имеет зарезервированной памяти для него или что он изменяет объем зарезервированной памяти.Вероятно, __attribute__((aligned(16)))
просто гарантирует, что начальный адрес массива выровнен по 16-байтовой границе.