Dann reden wir tatsächlich von unterschiedlichen Dingen, und sollten erstmal klären, was wir unter "Heap" verstehen.
Die von new/delete verwendete Speicherverwaltung.
Und auch nach dem Lesen der Beschreibung in der Win32-Referenz wird mir nicht ganz klar, was die Funktion VirtualAlloc() wirklich tut bzw. worin ihr Daseinszweck besteht.
Eine/mehrere Pages aus dem Adressraum des Prozesses vom System zu holen. In diese Pages kann man dann Code oder Daten legen.
GlobalAlloc() nutzt HeapAlloc() und HeapAlloc() nutzt VirtualAlloc().