我知道根据 malloc 的实现,使用的算法有所不同(自由链表、存储桶、二进制伙伴...... - 而且通常是混合)。
所以我想知道是否有可能知道 malloc 为某个块存储的元数据的大小并以副本的形式访问它。
我还没有找到任何标准函数或方法来做到这一点。
有什么想法吗?
没有标准函数可以获取 malloc 块的元数据,因为正如您正确地注意到的那样,元数据块的位置和内容很大程度上依赖于实现。
您可以使用特定于实现的函数来获取有关堆块的一些信息,例如GNU libc中的
malloc_usable_size(void *ptr)
。其他 malloc 实现可能支持类似的扩展。