美文网首页
ptmalloc heap_free

ptmalloc heap_free

作者: clive0x | 来源:发表于2021-01-10 12:16 被阅读0次

    arena.c

    static int heap_trim(heap_info *heap, size_t pad);函数有一段没读懂

    prev_size = prev_heap->size - (MINSIZE - 2 * SIZE_SZ);

    后面才看《Glibc 内存管理Ptmalloc2 源代码分析》才发现没理解top_chunk

    -------------------------------------------------------------------------

    fencepost chunk1 size:(MINSIZE - 2 * SIZE_SZ)

    -------------------------------------------------------------------------

    fencepost chunk2 size:2 * SIZE_SZ

    ---------------------------------------------------------------------------

    mem chunk

    ----------------------------------------------------------------------------

    top chunk最后两个chunk为 fencepost,总大小是MINSIZE。

    #define NBINS 128

    #define NSMALLBINS        64

    #define SMALLBIN_WIDTH    MALLOC_ALIGNMENT

    #define SMALLBIN_CORRECTION (MALLOC_ALIGNMENT > 2 * SIZE_SZ)

    #define MIN_LARGE_SIZE    ((NSMALLBINS - SMALLBIN_CORRECTION) * SMALLBIN_WIDTH)

    第一反应 SMALLBIN_CORRECTION为true/false,用在min_large_size:NSMALLBINS - SMALLBIN_CORRECTION开始没看懂,后面才反应过来true/false可以用1/0表示。

    MIN_LARGE_SIZE简化为NSMALLBINS*SMALLBIN_WIDTH,64位系统为64*0x10,值为0x400。(SMALLBIN_CORRECTION通常为0)

    相关文章

      网友评论

          本文标题:ptmalloc heap_free

          本文链接:https://www.haomeiwen.com/subject/ynukaktx.html