c++ - 为什么堆的数量总是1?

标签 c++ windows debugging windbg heap-memory

我正在使用 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/

相关文章:

c++ - 从内存缓冲区创建一个 fstream 对象

c++ - 如何管理和组织动态和静态几何

C++ 将纹理添加到 GL_QUAD 并且它变黑了

windows - 使用 WM_SHOWWINDOW 代替 ShowWindow() 来显示窗口

c - 解析字节 (C Windows)

c++ - 如何远程调试 Mac 桌面应用程序

c++ - 嵌入数据的多种类型

java - “GSSException Defective token detected”-尝试使用Kerberos对Windows上运行的Tomcat进行身份验证时

java - 调试 java for 循环 : skip to a specific iteration

ruby-on-rails - 从生产 irb 调试方法