C++ 关于MMGR的问题
我一直在查看内存分配检查器的MMGR,我有一些问题在internet上其他任何地方都看不到 1) 有“报告尺寸”和“实际尺寸”。我理解“报告的大小”是什么,它是新收到的大小,然而,“实际大小”是什么?为什么会有区别 2) 伐木是完全安全的吗?我看到日志记录发生在一个类的静态释放结束时,但是,这会给出内存泄漏的误报吗? 2A)可以肯定的是,静态交易总是最后发生,对吗C++ 关于MMGR的问题,c++,memory-leaks,thread-safety,memory-management,C++,Memory Leaks,Thread Safety,Memory Management,我一直在查看内存分配检查器的MMGR,我有一些问题在internet上其他任何地方都看不到 1) 有“报告尺寸”和“实际尺寸”。我理解“报告的大小”是什么,它是新收到的大小,然而,“实际大小”是什么?为什么会有区别 2) 伐木是完全安全的吗?我看到日志记录发生在一个类的静态释放结束时,但是,这会给出内存泄漏的误报吗? 2A)可以肯定的是,静态交易总是最后发生,对吗 3) 这段代码是线程安全的吗?如果不是,它如何成为线程安全的 恐怕我没有MMGR方面的经验,所以我只能回答您的第一个问题 一些内存调
3) 这段代码是线程安全的吗?如果不是,它如何成为线程安全的 恐怕我没有MMGR方面的经验,所以我只能回答您的第一个问题 一些内存调试器提到报告(或请求)和实际分配大小的原因与内存分配器的工作方式有关。他们很少精确地分配所要求的大小——通常他们会保留多一点。有各种可能的原因:
- 对齐问题:我认为在现代32位(或更多)系统上,没有一个分配器可以精确分配3个字节。根据体系结构,该值将至少四舍五入到单词大小的下一个倍数或4
- 管理问题:一些分配器将只处理大小为二次幂的分配。所以得到的块是4、8、16、32、64、128、256等字节。这在用户空间分配器中很少见,但在内核空间分配器中很常见
- 普罗维登斯:一些分配者每次都会分配多一点,以期待可能的重新分配