В C вы можете написать что-то вроде этого, чтобы узнать, сколько памяти выделено:
HANDLE heap = GetProcessHeap();
PROCESS_HEAP_ENTRY entry;
memset(&entry, 0, sizeof(entry));
unsigned long size = 0;
while(HeapWalk(heap, &entry)) {
if(entry.wFlags & PROCESS_HEAP_ENTRY_BUSY) {
size += entry.cbData;
}
}
GetProcessHeaps () может потребоваться, если используются другие кучи, и в этом случае вам необходим второй цикл для прохождения всех кучи. Я не знаю, почему их было бы больше, чем один.
В вашем случае вам, вероятно, следует подсчитать количество блоков и их размеры. Если вы хотите сохранить это на диск, я предлагаю сначала подсчитать количество блоков, выделить буфер для сохранения всей информации, а затем сохранить буфер в файле для последующего просмотра.