top chunk consolidation

우리가 heap에서 allocate 되어 있는 chunk를 free 했을때 tcache bin 그리고 arena에 있는 bin들로 들어가게 된다.

근데 얼마전에 문제를 풀다가 unsorted bin이 top chunk를 붙어있었을때 free를 하면 바로 top chunk로 들어가는 상황을 발견했다. 이에 대해 간단히 서술하고자 한다.

일단 예전에 tcache가 없던 시절에 ptmalloc2 기본 알고리즘 자체는 “top 바로 아래 chunk를 free하면 top과 항상 병합해서 새 top으로 만든다.” 이었다. 따라서 어떤 chunk든 바로 top chunk에 consolidation(병합이 된다)

하지만 2.26+ 부터 tcache가 도입되면서 만약 해당 청크가 tcache에 들어가는 거라면 병합이 일어나지 않고

tcache 에 들어가게 된다