Где эта переменная хранится в памяти? [дубликат]C++

Программы на C++. Форум разработчиков
Anonymous
Где эта переменная хранится в памяти? [дубликат]

Сообщение Anonymous »

Я действительно ожидал, что эта переменная будет храниться внутри исполняемого файла в одном из его разделов:

Код: Выделить всё

#define ARRAYLENGTH 10'000'000
int anarray[ARRAYLENGTH] = {};
// ONLY IF DECLARED CONST OR CONSTEXPR DOES MY EXECUTABLE BLOW UP TO 40MB
#include 
#include 

int main()
{

std::ofstream file_out{ "file_out.bin", std::ios_base::out | std::ios_base::binary };

file_out.write((const char*)& anarray[0], ARRAYLENGTH);
}
Если я не добавляю const или constexpr, мой исполняемый файл будет крошечным, всего пару КБ, как в режиме отладки, так и в режиме выпуска, то есть он там не хранится. Поскольку он не хранится в стеке (это невозможно), хранится ли он в куче/свободном хранилище? Я не просил его об этом, где эта переменная? Куда процессор пишет, когда инициализирует его, и откуда он читает, когда записывает в файл?
Я сделал это на C++, но происходит ли это и на C?
Я сделал это в C++, но происходит ли это и в C?
Я сделал это в C++, но происходит ли это и в C?
п>

Подробнее здесь: https://stackoverflow.com/questions/787 ... -in-memory

Вернуться в «C++»