出于调试和诊断内存碎片的目的,我希望能够查询内存管理器(为 C++ 应用程序提供的默认管理器)以获取某些信息,例如非连续空闲块的数量和每个块的大小那些。
我设想了一种从头到尾扫描或迭代整个堆并查看所有细节的方法。如果我在这里看到一块非空闲内存,那么它有多大(以字节为单位)?接下来,我可能会遇到一个空闲块,那个有多大?
我试过用第三方的东西换掉我们的内存管理器,但到目前为止,我们的代码库太复杂了,我一直在崩溃,即使我尝试了各种技巧。所以我必须要么依赖一些 CRT 堆诊断功能来做到这一点,要么依赖一些工具来为我做这件事。
感谢帮助(和 C++ 中的代码示例)!