您好,我需要记录我的堆,但现在我只是想用我的函数重载“new”运算符。
我需要总结在 malloc() 或 Heap*() 或其他 Windows mem* 函数之后增加的实际内存字节数
但现在我需要分析当前的堆实现。是否有可能获得像 HeapAlloc() 函数分配的块大小 - HeapSize() ?
.
我可以看到你没有搜索文档。
HeapSize()
存在。
编辑 经过反思,也许您正在要求 HeapSize()
的
替代,当您自己使用
new
执行分配时可以使用它。
答案是否定的。标准分配例程没有任何东西来获取有关内存块的信息,因为:
事实上
HeapSize()
是 Windows 执行此操作的依赖于实现的函数,但您只能在执行 HeapAlloc()
时才能使用它。有[也是非标准]
_msize
可以与
malloc
和朋友一起使用,但
new
可能无法使用malloc
。
因此我建议您在分配器中自己跟踪大小。
calloc、malloc 和 realloc。
但是,至少在 Visual Studio 下,使用默认分配器,它也适用于new。
使用它不是一个好主意,但是,它可能会为您的分析工作。还有一件事:
VMMap 等外部工具可能有助于此类分析。