Я начал с «пустой» программы и проверил размер файла .exe
int main()
{
system("pause");
}
Exe Размер: 58,5 КБ (59 904 байт)
Затем я добавил большоймассив статических переменных
int main()
{
const int BIG_NUMBER = 40000000;
static int x[40000000];
system("pause");
}
Exe Размер: 58,5 КБ (59,904 байт)
Создание нестатического массива также не имело никакого эффекта.Я добавил некоторый код, чтобы (а) убедиться на 100%, что переменная не оптимизирована, и (б) посмотреть, увеличат ли дополнительные инструкции число байтов .exe
int main()
{
const int BIG_NUMBER = 40000000;
static int x[40000000];
for (int i = 0; i < BIG_NUMBER; ++i)
{
std::cout << x[i] << std::endl;
}
system("pause");
}
Exe Size:58,5 КБ (59 904 байта)
Буквально ни на один байт больше.На данный момент мое (унылое) предположение состоит в том, что .exe запрашивает ОС выделять правильный объем памяти, необходимый для статических переменных при запуске программы, но это кажется неправильным.Что определяет размер файла .exe?