如何访问 malloc 为每个块存储的元数据?

问题描述 投票:0回答:1

我知道根据 malloc 的实现,使用的算法有所不同(自由链表、存储桶、二进制伙伴...... - 而且通常是混合)。

所以我想知道是否有可能知道 malloc 为某个块存储的元数据的大小并以副本的形式访问它。

我还没有找到任何标准函数或方法来做到这一点。

有什么想法吗?

c pointers malloc allocation libc
1个回答
0
投票

没有标准函数可以获取 malloc 块的元数据,因为正如您正确地注意到的那样,元数据块的位置和内容很大程度上依赖于实现。

您可以使用特定于实现的函数来获取有关堆块的一些信息,例如GNU libc中的

malloc_usable_size(void *ptr)
。其他 malloc 实现可能支持类似的扩展。

© www.soinside.com 2019 - 2024. All rights reserved.