Нет хорошего решения для этого в Windows. Когда программа освобождает блок кучи, она почти всегда добавляется в список свободных блоков. Вы можете только обнаружить это, пройдя кучу с HeapWalk (). Это дорого и очень вредно для работы многопоточной программы, потому что вы должны заблокировать кучу.
Кроме того, программе почти никогда не хватает свободного места в виртуальной памяти. Сначала у него заканчивается свободный непрерывный кусок пространства, достаточно большой, чтобы соответствовать запросу. Сумма размеров блоков, которые вы получаете от HeapWalk, не имеет смысла, если только вы никогда не делаете очень маленькие выделения.
Наиболее типичная причина, по которой вам нужна такая функция, заключается в том, что вашей программе постоянно не хватает памяти. Существует очень эффективное и дешевое решение для этой проблемы. Двести баксов купит вам 64-битную версию Windows.