Этот вопрос зависит от количества используемых переменных. Поскольку вы не указали, какой компилятор, язык или даже операционную систему, это сложно определить! Все это зависит от операционной системы, которая отвечает за управление памятью приложений. Короче говоря, нет определенного ответа на этот вопрос, подумайте об этом, компилятор / компоновщик во время выполнения просит операционную систему выделить блок памяти, что распределение зависит от того, сколько существует переменных, насколько они велики, область применения и использование переменных. Например, эта простая программа на 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
или nm
, вы обнаружите, что появился раздел data
- почему? потому что мы добавили переменную типа массива int с 100 элементами.
Это простое упражнение докажет, что разделы растут, и, следовательно, двоичный код становится больше, и также докажет, что вы не можете заранее определить, сколько памяти будет выделено, поскольку реализация во время выполнения варьируется от компилятора к компилятору и от операционной системы. к операционной системе.
Короче говоря, ОС вызывает выстрел на управление памятью!