Адресное пространство, которое видит ваша программа, ВСЕГДА виртуально. (По крайней мере, в каждой современной ОС.)
Вы выделяете память, вызывая для этого API-интерфейсы ОС (или компилятор делает это за вас, когда вы определяете переменные в своем коде).
Адреса (или указатели, независимо от того, как их называет язык программирования), которые вы возвращаете для этой выделенной памяти, действительны в контексте вашей программы.
За память, которую вы выделили самостоятельно, вы несете ответственность за ее возврат в ОС. Если компилятор сделал что-то от вашего имени, он также включит необходимую очистку.
Когда ваша программа выходит из ОС, она также выполнит некоторую очистку.
Где фактические данные программы находятся в физической памяти компьютера, полностью академичны. Ваша ОС отобразит виртуальное адресное пространство, которое видит ваша программа, в физическое ОЗУ и / или пространство подкачки. Вы сами просто не можете знать, как это делается в любой момент времени.
Это может быть важно, если вы программируете драйвер устройства или компонент ядра, но у вас явно нет необходимых знаний об операционных системах и программировании для этого. Это ясно из твоего вопроса.
Такое программное обеспечение работает на другом уровне и может взаимодействовать с реальной физической ОЗУ. Для этого есть специальные методы и API, но вы никогда не встретите их в обычной пользовательской программе.
Другая возможность - когда вы выполняете низкоуровневое программирование на встроенном устройстве, где нет ОС, обеспечивающей этот уровень абстракции между виртуальной и физической ОЗУ. Опять же: это что-то для специалистов.
Вам просто не о чем беспокоиться, если вы пишете правильные программы по правилам языка программирования.
Конечно, если ваша программа неверна (например, обращается к памяти, которую она никогда не выделяла), программа может аварийно завершиться или будет остановлена самой ОС, если ОС обнаружит, что программа работает неправильно. Выяснение того, что пошло не так, и исправление проблемы в программе - важный аспект программирования. Это называется отладкой.