关于MMGR的问题
Questions about MMGR
我一直在看MMGR作为内存分配检查器,我有一些问题在互联网上其他地方都看不到。
1( 有一个"报告的大小"和一个"实际大小"。我知道"报告的大小"是什么,因为它是新收到的大小,然而,"实际大小"是多少?为什么会有区别?
2( 日志记录是否完全安全?我看到日志记录发生在类的静态释放结束时,然而,这是否会给出内存泄漏的误报?2A(可以肯定的是,静态释放总是最后发生,对吧?
3( 这个代码线程安全吗?如果没有,它如何成为线程安全的?
恐怕我对MMGR没有任何经验,所以我只能为您的第一个问题提供答案。
一些内存调试器提到报告(或请求(和实际分配大小的原因与内存分配器的工作方式有关。他们很少准确地分配所需的大小——通常他们会多预留一点。有各种可能的原因:
-
对齐问题:我不认为有一个分配器可以在现代32位(或更多(系统上分配例如正好3个字节。该值将四舍五入到,至少是单词大小的下一个倍数或4,具体取决于体系结构。
-
管理问题:一些分配器只处理二次方大小的分配。所以你得到了4、8、16、32、64、128、256等字节的块。这在用户空间分配器中很少见,但在内核空间分配器中却很常见。
-
普罗维登斯:一些分配者每次都会多分配一点,以预期可能的重新分配。
在任何情况下,保留的内存通常都会比请求的数量多一些,因此存在两个数字。
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 一个关于在C++中重载布尔运算符的问题
- 首要问题的答案让值班员搞错了
- setlocale的C++土耳其字符串问题
- 如何重构类层次结构以避免菱形问题
- 基于boost的程序的静态链接——zlib问题
- C++格式化输出问题
- 关于MMGR的问题