我正在使用 WinDbg 通过使用 dt _PEB @$peb
查看进程中的堆数。我得到以下信息,
+0x088 NumberOfHeaps : 1
现在根据高级 Windows 调试一书,
Most applications implicitly use components that create their own heaps. A great example is the C runtime, which creates its own heap during initialization.
我在 main 处添加了断点,但我仍然可以看到进程中只有一个堆。
其次,我运行了以下代码,堆的数量仍然是 1。
BYTE* pAlloc1 = NULL;
BYTE* pAlloc2 = NULL;
HANDLE hProcessHeap = GetProcessHeap();
pAlloc1 = (BYTE*)HeapAlloc(hProcessHeap, 0, 16);
pAlloc2 = (BYTE*)HeapAlloc(hProcessHeap, 0, 1500);
为什么我没有获得进程中增加的堆数?
最佳答案
当一个进程启动时,它有一个堆,即默认的进程堆。这解释了 1 的计数。您可以通过调用 HeapCreate
创建新堆。 。如果这样做,您将看到堆计数增加。
关于c++ - 为什么堆的数量总是1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25606974/