Советую почитать Кернигана и Ритчи, прежде чем нырять в cppreference и Страуструпа, и в устройство ОС.
Грубо говоря, C/C++ не использует абстрактную модель памяти, а использует модель памяти, которую представляет ОС, т.к. исходный код транслируется в ассемблер. Всё статическое загрузится в память, если загрузился исполняемый файл, все что выделяется на стэке в C/C++, первично будет выделяться в области памяти стэка процесса. В зависимости от итогового ассемберного кода в некоторых случаях, выделения памяти может не произойти, и для хранения может быть задействован регистр самого процессора. Но в случае выделения памяти на стэке (в уже выделенной ОС для процесса памяти из RAM) может потребоваться хранить это в кэшах данных CPU, и, если того потребует ОС, может быть задействован файл подкачки (swap). Тогда, фактически, значение переменной окажется на drive. Все что выделяется через ключевое слово new, если оператор не переопределен, будет однозначно выделено "на куче".