提问人:python3.789 提问时间:5/21/2023 最后编辑:trincotpython3.789 更新时间:5/29/2023 访问量:86
Uclibc fastbin 的行为是否像 Glibc fastbin?
Does Uclibc fastbin behaving like Glibc fastbin?
问:
在 Glibc 中,fastbin 中有 7 个垃圾箱,从 0x20 到 0xb0每个垃圾箱只容纳它们的大小。它是一个单向链表。
Uclibc(0.9.33.2)中的fastbin是一样的吗?有什么区别吗?
答:
Uclibc 的 fastbin 在 malloc-standard/malloc.h 中声明,并在文件 malloc-standard/mallinfo.c、malloc-standard/malloc.c、malloc-standard/free.c 中使用。
该实用程序(在 Uclibc 的源代码上启动时)在其他地方找不到它们。grep
评论说:malloc.h
/* TRIM_FASTBINS控制一个非常小的块的 free() 是否可以
立即导致修剪。设置为 true (1) 可以减少内存
占用,但几乎总是会减慢使用大量
小块的程序的速度。仅当您愿意放弃一些速度以在
使用许多小块的程序中释放
内存时更积极地减少系统级内存占用时,才定义此项。通过将 MXFAST 设置为 0 可以获得
基本相同的效果,但这可能会导致
使用许多小块的程序速度进一步变慢。
TRIM_FASTBINS 是一个介于编译时之间的选项,它
仅禁止那些与最顶层内存接壤的块被放置在 fastbin 中
。 */ #ifndef TRIM_FASTBINS #define TRIM_FASTBINS 0 #endif
因此,如果您使用 Uclibc 构建 Uclibc,它似乎正在按照您的意愿处理它们。TRIM_FASTBINS
__do_check_remalloced_chunk
但我不确定,您需要从源代码编译该 Uclibc 库并使用调试器来检查该属性。
下一个:Malloc 奇怪的崩溃
评论