malloc()
специально выделяет из кучи.
Находится ли куча памяти в виртуальном адресном пространстве или нет, полностью зависит от операционной системы и аппаратной архитектуры.В системе с MMU и операционной системой, которая его использует, вся память (куча, кодовое пространство, стеки, статическая память и отображение ввода-вывода в памяти и т. Д.) Существует в виртуальном пространстве, даже еслифизическое виртуальное сопоставление является взаимно-однозначным.
Чтобы иметь виртуальное адресное пространство, требуется MMU для сопоставления физических и виртуальных адресов, не все цели имеют MMU, поэтому динамическая память и виртуальная память никоим образом не являются синонимами или взаимозаменяемыми понятиями;они являются полностью независимыми понятиями.
Что касается «виртуального адресного пространства», являющегося «наследием DOS», то вы не можете быть дальше от истины, 16-битная архитектура x86 не поддерживает MMU или виртуальную памятьсовсем.Интересно, откуда у вас эта идея?