【问题标题】:perturb byte in _int_malloc( ) in glibcglibc 中 _int_malloc( ) 中的扰动字节
【发布时间】:2011-11-15 10:04:06
【问题描述】:

经过malloc() 的 glibc 代码和实际分配器之后 即_int_malloc() 函数我无法弄清楚“perturn_byte”的意义。它在alloc_perturb macro()_int_malloc()的很多地方都被使用。

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

谢谢

【问题讨论】:

    标签: malloc glibc


    【解决方案1】:

    这是提交,它添加了 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 从系统(通过brk 或mmap)获取的每个内存字节都将被perturb_byte(不是零)填充。我想,被释放的内存也会被填满。

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

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

    M_PERTURB
    

    如果非零,则在分配内存块(由 calloc 分配时除外)和释放时,根据此参数的某些低位位填充内存块。这可用于调试未初始化或已释放堆内存的使用。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-31
      • 2017-02-18
      • 1970-01-01
      • 2013-03-24
      • 1970-01-01
      • 2014-10-11
      • 2015-06-21
      • 2013-01-27
      相关资源
      最近更新 更多