Alphabet
представляет собой массив из 10 unsigned short
элементов. Его размер 10 * sizeof (unsigned short)
, где sizeof (unsigned short)
обычно 2, но он может меняться для разных реализаций.
В стандартах, используемых стандартом, Alphabet
имеет время автоматического хранения. Это означает, что он создается при входе в самый внутренний содержащий блок (в этом случае ограничивается ближайшими {
и }
) и перестает существовать при выходе из этого блока. (Обычно он будет выделен на «стек», но языковой стандарт на самом деле не использует этот термин, а некоторые компиляторы могут использовать другую стратегию.)
Когда я говорю, что оно «перестает существовать», я не означает, что это обязательно очищено или вытолкнуто со стека. Это просто означает, что вам больше не разрешено пытаться получить к нему доступ. (Вы можете попытаться сделать это, сохранив указатель на объект и разыгрывая его за пределами блока, и если вы это сделаете, поведение вашего кода не определено.)
В принципе, Alphabet
существует только в том случае, когда выполняется самый внутренний блок-блок. Компилятор может реализовать это так, как ему нравится. Обычно фактическое распределение происходит при вызове функции, а для стека, которое нужно выскочить, когда функция возвращается, но концептуально Alphabet
перестает существовать в конце блока, даже если память не была явно освобождена.
Если я создаю файл .hex для этого кода, то как он влияет на размер .hex-файла. Так как im кодирование для микроконтроллера, поэтому я хочу, чтобы мой код был самым коротким по размеру и памяти – shafeeq
Размер исполняемого файла, скорее всего, t быть затронутым. Компилятор будет генерировать код, который выделяет память для «Алфавит» во время выполнения. Если он выделяет, скажем, 20 байтов, это не занимает в два раза больше кода, чем выделение 10 байтов. Разумеется, это повлияет на объем памяти, выделенный при запуске вашей программы. И лучший способ определить использование памяти - попробовать и измерить ее самостоятельно. –
На самом деле я не ожидаю объяснений для нижнего уровня, но если вы думаете, что с моим ответом что-то не так, я был бы признателен за некоторые отзывы о том, как вы думаете, что его можно улучшить. –