You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

glibc中malloc_chunk结构体bk成员的缩写含义咨询

glibc malloc_chunk中bk成员的缩写含义

嘿,刚好对glibc的malloc实现比较熟,来给你说清楚——bkback的缩写,和fdforward的缩写)对应,是双向链表结构里的后向指针。

从你给出的malloc_chunk结构体定义也能直观看到它的作用:

struct malloc_chunk {
    INTERNAL_SIZE_T mchunk_prev_size; /* Size of previous chunk (if free). */
    INTERNAL_SIZE_T mchunk_size; /* Size in bytes, including overhead. */
    struct malloc_chunk* fd; /* double links -- used only if free. */
    struct malloc_chunk* bk; /* Only used for large blocks: pointer to next larger size. */
    struct malloc_chunk* fd_nextsize; /* double links -- used only if free. */
    struct malloc_chunk* bk_nextsize;
};

当内存块(chunk)处于空闲状态时,fd会指向链表中的下一个空闲chunk,而bk则指向上一个空闲chunk,这对指针配合起来,就能让malloc高效地在空闲链表中完成遍历、插入或删除操作。哪怕是针对大内存块的特殊场景,bk的核心缩写含义依然是back,只是功能上延伸为指向更大尺寸的块而已。

内容的提问来源于stack exchange,提问作者Halkichi

火山引擎 最新活动