Где будут храниться инициализированные значения сегмента данных до времени выполнения? - PullRequest
0 голосов
/ 27 декабря 2018

Обычно сегмент данных в коде C находится в энергозависимой памяти RAM и состоит из сегмента инициализированных данных, сегмента неинициализированных данных (.BSS) , Стековая память и куча.

  1. Стековая память приходит на снимок только во время выполнения процедур вызова во время выполнения и при push и pull значений.

  2. Куча используется для вызовов динамического выделения памяти malloc, calloc и realloc.

  3. .BSS сегмент имеет значение только для memset или внутренних функций, так как не имеет подлинных начальных значений.

  4. Но сегмент инициализированных данных даже если он является статическим или глобальным, он должен иметь некоторые значения, и эти значения должны быть сохранены в энергонезависимой ячейке памяти, поскольку они должны существовать до выполнения кода.

Вопрос: В каком разделе ячейки энергонезависимой памяти это инициализированные значения aхранятся ли и какие средства мы можем использовать для уменьшения потребления памяти этим?

1 Ответ

0 голосов
/ 27 декабря 2018

Следующие две диаграммы помогают понять структуру памяти c бинарным

enter image description here enter image description here

См .: C компилятор.Карта памяти.Программа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...