La réponse est dans la documentation, mais en gros VirrtualAlloc te donne pas mal de contrôle sur la mémoire virtuelle de ton processus (d'où le nom

) et va réserver et éventuellement allouer des pages mémoire directement, pas juste des blocs dans un tas comme HeapAlloc (d'où son nom, etc.

).
Par exemple, si tu veux créer ton propre malloc, je suppose qu'il est plus sage d'utiliser VirtualAlloc que HeapAlloc :]