c++ - 使用VirtualQuery找出哪个 "file"使用内存中的某个页面

标签 c++ windows memory memory-management process

我正在使用 VirtualQuery 遍历我的应用程序的虚拟空间。但我想识别应用程序分配的所有内容,而不仅仅是我的 exe - 类似于 SysInternals 的 VMmap 应用程序 - 我需要知道哪些页面属于哪个文件(我需要识别为我的应用程序和 dll 分配的页面)。如何实现?

最佳答案

您可以将 CreateToolhelp32Snapshot 与 TH32CS_SNAPMODULE 结合使用来检索模块的基址和大小。对于堆,您可以使用 GetProcessHeaps() 和 HeapWalk() 来获取不同的堆区域(提交的和保留的)。

其他东西(线程堆栈、映射内存)似乎更难检索。

关于c++ - 使用VirtualQuery找出哪个 "file"使用内存中的某个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5018908/

相关文章:

windows - Windows 上的 ASP 集成开发环境

windows - 找不到 XAMPP 对象错误

Java -Xms 初始大小效果

java - 多维数组声明中的顺序对已用内存有影响吗?

c++ - 如何在 Linux 用户空间中处理类似 GPIO 中断的处理

c++ - STL lower_bound 不符合规范

windows - 'IF EXIST'如何批量使用

C++ 严格的别名规则和指向成员的指针

c++ - 如何在 C++ 类中使用引用变量?

c - curl 分配的内存过多(libcurl 缓存的内存)