Куча памяти находится в виртуальной памяти ваших программ, которая выделяется VirtualAlloc за кулисамиОднако проблема заключается в том, что VirtualAlloc выделяет память только большими кусками, называемыми страницами, что делает невозможным использование для общего выделения памяти.
По этой причине существует HeapAlloc, который управляет выделенными страницами и может объединять несколько размещений в одну страницу, чтобы вам не пришлось без необходимости выделять целую страницу (обычно 4 КБ, но это не правило) для каждого небольшого выделения.