在glibc中对_int_malloc()中的字节进行扰动



在浏览了malloc()和实际分配器的glibc代码之后即_int_malloc()函数,我无法弄清楚"perturn_byte"的意义。它在_int_malloc()的许多地方被用于alloc_perturb macro()

我知道这个问题太具体了,请原谅。但是如果有人已经知道了答案,那就省了我的头。

谢谢

这是提交,它添加了摄动字节:

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)获得的每个内存字节将被摄动字节填充(这不是零)。我想,空闲的内存也会被填满。

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

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

M_PERTURB

如果不为零,内存块在分配和释放时将根据该参数的一些低阶位填充值(由calloc分配时除外)。这可以用来调试未初始化或释放的堆内存的使用。

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

相关内容

  • 没有找到相关文章

最新更新