Linux堆结构以及malloc()和free()的行为

Linux堆结构以及malloc()和free()的行为,第1张

Linux堆结构以及malloc()和free()的行为

大多数

malloc()
实现都是通过在分配的内存块之前和/或之后跟踪堆自身内部的堆状态来工作的。超出分配的块会导致此数据破坏-
其中一些数据可能包含指针或长度,而破坏这些数据会导致实现尝试访问无效的内存位置。

实现方式的详细信息

malloc()
取决于您所使用的系统和libc。如果您使用的是glibc(如果您使用的是Linux,则可能会出现这种情况),此处对此有一个很好的解释:

http://gee.cs.oswego.edu/dl/html/malloc.html

假设情况如此,

0x29
您看到的可能是块大小(32 =
0x20
)和一些标志的按位或。这是可能的,因为所有堆分配都舍入到最接近的16个字节(或更多!),因此可以始终假定大小的低八位为零。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4976855.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存