gpt4 book ai didi

c++ - 我想确定动态链接库使用了多少内存

转载 作者:可可西里 更新时间:2023-11-01 10:27:52 25 4
gpt4 key购买 nike

我想找出哪些库使用的内存最多。我想在我的应用程序中制作一种内存记录器。这需要以编程方式查找其自身进程中哪些库使用了多少内存。

例如,我有一个程序使用了 10MB 的内存,其中有一个 .dll 使用了 9MB 的内存。我想查看所有的 dll 以及它们使用了多少内存。此应用程序将在 Windows 上运行。一切都需要以编程方式完成。

最佳答案

不确定这是否是最简单的方法,但也许您应该在加载每个库后立即 Hook 内存分配 WinAPI 函数。然后在你的钩子(Hook)中你将能够进行必要的计数查看 Microsoft Detours 库作为一个很好的 Hook 框架 (http://research.microsoft.com/en-us/projects/detours/)。它通常不是免费的,但可以免费“用于研究、非商业和非生产用途”

Hook 哪些实际函数实际上取决于需要跟踪的 dll。

如果所有这些都是使用动态链接的 MSVC 运行时编译的,则必须 Hook malloc()/free()/calloc()/realloc() 系列函数。如果它是针对运行时静态链接的,或者不是用 MS VC 编译的,则必须 Hook 与内存相关的 WinAPI 调用,例如 HeapAlloc/HeapCreate/HeapDestroy/HeapFree/heapReAlloc/VirtualAlloc/VirtualFree(我只是寻找与内存相关的msvcr100.dll 从 kernel32.dll 导入的函数)

关于c++ - 我想确定动态链接库使用了多少内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9226918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com