我的问题是关于 glibc。bk成员的名字是什么的缩写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;
};
Run Code Online (Sandbox Code Playgroud)
参考:https : //code.woboq.org/userspace/glibc/malloc/malloc.c.html#malloc_chunk
在fd与bk成员是在双向链表向前和向后的指针。
换句话说,fd是next指针,bk是previous指针,如下面的三元素列表所示:
forward links -->
_(fd)_ _(fd)_
/ \ / \ _(fd)-> NULL
/ V / V /
head ---> item1 item2 item3
/ ^ / ^ /
NULL <-(bk)_/ \_(bk)_/ \_(bk)_/
<-- backward links
Run Code Online (Sandbox Code Playgroud)
请注意,此特定示例具有头部和尾部,结束元素指向 NULL。由(因为它是一个循环列表)维护的循环列表可能不是这种情况,它只是用来展示一种实现方法。glibc
事实上,您在问题中提供的链接毫不含糊地说明了这一点,从结构定义之外的五十多行开始(稍微解释一下):
forward links -->
_(fd)_ _(fd)_
/ \ / \ _(fd)-> NULL
/ V / V /
head ---> item1 item2 item3
/ ^ / ^ /
NULL <-(bk)_/ \_(bk)_/ \_(bk)_/
<-- backward links
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
145 次 |
| 最近记录: |