fastbin

    ptmalloc free & bin

    메모리를 할당할때 어떤 일이 일어나는지 정리했으니까 이번에는 free를 호출할때 어떤 일이 일어나는지 보자 1. What is BIN? 우선 bin이 무엇인지 알아보자 우리는 c언어에서 malloc과 free를 이용하여서 동적으로 메모리를 관리한다. 만약 malloc을 이용하여서 메모리를 할당하고 free를 이용하여 free chunk를 만들어준다면 이 free chunk는 bin이라는 구조에 들어가게 된다. bin은 크게 4가지 종류로 나뉜다. 1. fast bin 2. unsorted bin 3. small bin 4. large bin bin들에 대한 정보는 malloc_state 구조체에서 확인 할 수 있다. struct malloc_state { /* Serialize access. */ mut..

    Structure of Chunk

    우선 chunk는 malloc() 함수가 호출됨으로서 할당받는 영역을 chunk라고 부른다. 32bit에선 chunk가 8byte 단위로 할당이 되고 64bit에서는 16byte 단위로 할당이 된다. chunk는 크게 3가지 타입을 가진다. 기본 구조는 동일하며 약간의 내용물의 차이가 있다. 1. Allocated Chunk (할당되어 있는 청크) 우선 Allocated Chunk의 Structure부터 살펴보자 - 1. Prev_size - 만일 해당 chunk 바로 이전 chunk가 해제된 경우, Prev_size에는 이전 chunk의 크기를 저장한다. 만약 아무런 해제된 chunk가 없고 죄다 할당된 chunk라면 Prev_size는 기본값인 0으로 바뀐다. - 2. size - size field..