2013-06-18 3 views

ответ

0

Alphabet представляет собой массив из 10 unsigned short элементов. Его размер 10 * sizeof (unsigned short), где sizeof (unsigned short) обычно 2, но он может меняться для разных реализаций.

В стандартах, используемых стандартом, Alphabet имеет время автоматического хранения. Это означает, что он создается при входе в самый внутренний содержащий блок (в этом случае ограничивается ближайшими { и }) и перестает существовать при выходе из этого блока. (Обычно он будет выделен на «стек», но языковой стандарт на самом деле не использует этот термин, а некоторые компиляторы могут использовать другую стратегию.)

Когда я говорю, что оно «перестает существовать», я не означает, что это обязательно очищено или вытолкнуто со стека. Это просто означает, что вам больше не разрешено пытаться получить к нему доступ. (Вы можете попытаться сделать это, сохранив указатель на объект и разыгрывая его за пределами блока, и если вы это сделаете, поведение вашего кода не определено.)

В принципе, Alphabet существует только в том случае, когда выполняется самый внутренний блок-блок. Компилятор может реализовать это так, как ему нравится. Обычно фактическое распределение происходит при вызове функции, а для стека, которое нужно выскочить, когда функция возвращается, но концептуально Alphabet перестает существовать в конце блока, даже если память не была явно освобождена.

+0

Если я создаю файл .hex для этого кода, то как он влияет на размер .hex-файла. Так как im кодирование для микроконтроллера, поэтому я хочу, чтобы мой код был самым коротким по размеру и памяти – shafeeq

+0

Размер исполняемого файла, скорее всего, t быть затронутым. Компилятор будет генерировать код, который выделяет память для «Алфавит» во время выполнения. Если он выделяет, скажем, 20 байтов, это не занимает в два раза больше кода, чем выделение 10 байтов. Разумеется, это повлияет на объем памяти, выделенный при запуске вашей программы. И лучший способ определить использование памяти - попробовать и измерить ее самостоятельно. –

+0

На самом деле я не ожидаю объяснений для нижнего уровня, но если вы думаете, что с моим ответом что-то не так, я был бы признателен за некоторые отзывы о том, как вы думаете, что его можно улучшить. –

Смежные вопросы