- unlink
- 대상 청크의 크기와 다음 청크의 prev_size 대조
- 대상 청크의 fd (이 청크 직전에 free된 청크)의 bk가 대상 청크와 같은지 확인
- 대상 청크의 bk (이 청크 직후에 free된 처크)의 fd가 대상 청크와 같은지 확인
- smallbin 범위(32비트일경우 512바이트미만 64비트일경우 1024바이트미만)가 아닐때(즉 largebin에 들어갈 크기 일때) && 대상 청크의 fd_nextsize가 null이 아닐때
- fd_nextsize(대상 청크 직전에 free된청크)의 bk_nextsize가 대상청크인지 확인
- bk_nextsize(대상 청크 직후에 free된 청크)의 fd_nextsize가 대상청크인지 확인
large bin 은 fd_nextsize와 bk_nextsize를 통해 circular double linked list를 통해 관리
'힙(heap) > glibc' 카테고리의 다른 글
__libc_free함수 분석 (0) | 2019.08.09 |
---|---|
__libc_malloc함수 분석 (0) | 2019.08.09 |
__builtin_expect, likely, unlikely (0) | 2019.08.09 |
__libc_calloc 함수 분석 (0) | 2019.08.09 |
tcache 분석 (0) | 2019.08.08 |