如何在Windows平台上获取堆大小

5

正如问题标题所示,我想知道是否有一种方法可以获取当前进程的堆大小。


由于堆(heaps)的工作原理,堆大小通常不是有用信息。您可能想知道可以进行的最大堆分配,是吗? - Drew Dormann
不好意思,我想知道的是已使用堆大小。 - Kira
除了@DrewDormann所说的,你的问题非常模糊。你是想要整个系统的堆大小(实际上并不存在这样的东西),还是针对特定进程的堆大小(每个线程都可以有一个堆)?为什么需要这些信息? - Nik Bougalis
我已经提到了这是针对当前进程的。 - Kira
1个回答

6
你可以这样做-但我认为这将会很慢,很痛苦。
  1. 使用GetProcessHeaps枚举进程堆。
  2. 使用HeapWalk枚举每个堆中的块。
  3. 使用HeapSize获取不同块的大小和类型。

@NikBougalis - 本地变量是在堆栈上创建的,而不是在堆上创建的? - user93353
1
糟糕!早上太早了,咖啡也不够。愚蠢的评论已删除。 - Nik Bougalis
不需要使用HeapSize,因为PROCESS_HEAP_ENTRY已经包含了所有的大小信息。 - Alex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接