gpt4 book ai didi

malloc - glibc 中 _int_malloc( ) 中的扰动字节

转载 作者:行者123 更新时间:2023-12-04 06:07:52 25 4
gpt4 key购买 nike

在完成 malloc() 的 glibc 代码和实际的分配器之后即 _int_malloc() 函数我无法弄清楚“perturn_byte”的意义。它在 _int_malloc() 的许多地方用于 alloc_perturb macro()

我知道这个问题只是为了具体回答,请原谅。但万一有人已经知道 answer 会让我省去一些头撞。

谢谢

最佳答案

这是添加 perturb_byte 的提交:

http://repo.or.cz/w/glibc.git/commitdiff/854278dff83a754f1d24a17c1c1068e8ebfe6195

这里是关键评论(以及打开此功能的示例):

+  /* Make uses of freed and uninitialized memory known.  */
+ mallopt (M_PERTURB, 42);

因此,它是检测 free-d 或 malloce 的误用但尚未初始化的内存的调试功能。

malloc 从系统(通过 brkmmap)获取的每个内存字节都将填充 perturb_byte(不是零)。我认为,释放的内存也会被填满。

然后用户可以检查,在 malloced 范围内是否还有一些未初始化的,或者是否有一些写入释放内存。

这是文档:http://www.gnu.org/s/hello/manual/libc/Malloc-Tunable-Parameters.html

M_PERTURB

If non-zero, memory blocks are filled with values depending on some low order bits of this parameter when they are allocated (except when allocated by calloc) and freed. This can be used to debug the use of uninitialized or freed heap memory.

如我所见,这只能用于从调试器进行手动检查。

关于malloc - glibc 中 _int_malloc( ) 中的扰动字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8134537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com