关于MMGR的问题

Questions about MMGR

本文关键字:问题 MMGR 关于      更新时间:2023-10-16

我一直在看MMGR作为内存分配检查器,我有一些问题在互联网上其他地方都看不到。

1( 有一个"报告的大小"和一个"实际大小"。我知道"报告的大小"是什么,因为它是新收到的大小,然而,"实际大小"是多少?为什么会有区别?

2( 日志记录是否完全安全?我看到日志记录发生在类的静态释放结束时,然而,这是否会给出内存泄漏的误报?2A(可以肯定的是,静态释放总是最后发生,对吧?

3( 这个代码线程安全吗?如果没有,它如何成为线程安全的?

恐怕我对MMGR没有任何经验,所以我只能为您的第一个问题提供答案。

一些内存调试器提到报告(或请求(和实际分配大小的原因与内存分配器的工作方式有关。他们很少准确地分配所需的大小——通常他们会多预留一点。有各种可能的原因:

  • 对齐问题:我不认为有一个分配器可以在现代32位(或更多(系统上分配例如正好3个字节。该值将四舍五入到,至少是单词大小的下一个倍数或4,具体取决于体系结构。

  • 管理问题:一些分配器只处理二次方大小的分配。所以你得到了4、8、16、32、64、128、256等字节的块。这在用户空间分配器中很少见,但在内核空间分配器中却很常见。

  • 普罗维登斯:一些分配者每次都会多分配一点,以预期可能的重新分配。

在任何情况下,保留的内存通常都会比请求的数量多一些,因此存在两个数字。