BSS, Стек, "куча", Данные, Код/Текст - Где каждый из них запускаются в памяти?

Сегменты памяти - BSS, Стек, "куча", Данные, Код/Текст (Там еще?).

Скажите, что у меня есть 128 МБ RAM, Может кто-то говорить мне:

  • Сколько памяти выделяется для каждого из этих сегментов памяти?

  • Где они запускают? Укажите диапазон адресов или что-то как этот для лучшей ясности.

  • Какое влияние факторов, которое должно запуститься где?

7
задан aks 8 February 2010 в 16:53
поделиться

1 ответ

Этот вопрос зависит от количества используемых переменных. Поскольку вы не указали, какой компилятор, язык или даже операционная система, это сложно определить! Все зависит от операционной системы, которая отвечает за управление памятью приложений. Короче говоря, на этот вопрос нет однозначного ответа, подумайте об этом, компилятор / компоновщик во время выполнения запрашивает у операционной системы выделение блока памяти, это распределение зависит от того, сколько переменных есть, насколько они велики, объем и использование переменных. Например, эта простая программа на C в файле с именем simpletest.c :

#include <stdio.h>
int main(int argc, char **argv){
   int num = 42;
   printf("The number is %d!\n", num);
   return 0;
}

Предположим, среда была основана на Unix / Linux и была скомпилирована следующим образом:

gcc -o simpletest simpletest.c

Если вы должны были выполнить objdump или nm в двоичном образе simpletest , вы увидите разделы исполняемого файла, в данном случае 'bss', 'text'. Обратите внимание на размеры этих разделов, теперь добавьте int var [100]; в приведенный выше код, перекомпилируйте и повторно выпустите objdump или нм , вы обнаружит, что появился раздел data - почему? потому что мы добавили переменную типа массива int со 100 элементами.

Это простое упражнение докажет, что разделы растут, и, следовательно, двоичный файл становится больше, а также докажет, что вы не можете заранее определить, сколько памяти будет выделено, поскольку реализация среды выполнения варьируется от компилятора к компилятору и от операционной системы. к операционной системе.

Короче говоря, ОС делает ставку на управление памятью!

5
ответ дан 7 December 2019 в 07:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: