Память отображается в таблицу, которая содержит два набора: виртуальный адрес, такой как шестнадцатеричный, и фактический сектор и страницу, на которые она должна перейти, если запрашивается этот адрес.
Теперь вы можете задать вопрос: почему каждый раз, когда я получаю доступ к одному и тому же шестнадцатеричному адресу, я получаю разные значения, хотя они и являются мусором.
Ответ таков: когда вы компилируете и запускаете программу, программа загружается в ОЗУ (оперативное запоминающее устройство) и выгружается, когда вы завершаете ее работу.Так что в первый раз ваша программа может получить пробел, скажем, буквально в блоке 90, поскольку оперативная память была свободна.Но во время второго запуска программа может быть загружена в другом блоке, скажем, 720. Это отвечает только наполовину.
Аналогично, таблицы отображения страниц обновляются для использования свободного и свободного пространства и, следовательно, хотя адрес остается тем же висходный код, при выполнении вы получите разные значения для этого адреса.