이 포스트에서는 malloc.c에서 사용되어지는 대표적인 구조체들을 알아보고, malloc(), free()함수에서 사용되는, 여러가지 정보를 포스팅할 것이다. malloc_state 구조체 주요 항목들 fastbinsY[NFASTBINS] → 해당 Arena에서 fastbin의 시작 포인터들로 이루어진 배열. 배열의 각 인덱스가 byte별 fastbin의 시작 포인터가 된다. top → Top Chunk의 주소가 들어있는 포인터 변수. last_remainder → bin에 들어있는 chunk를 분할하여 할당해주고 남은 chunk의 주소가 들어있는 포인터 변수. bins[NBINS * 2 - 2] → unsorted bin, small bin, large bin의 시작 포인터로 이루어진 배열. 0~63..
이 포스트에서는 우리가 malloc(), free()함수 호출시 어떤 과정을 통해 메모리가 할당, 해제되는지 살펴 볼 것이다. malloc() 함수 호출 libc_malloc() → 사용하는 Thread에 맞게 Arena 설정 후, int_malloc()함수 호출. int_malloc() → 재사용 가능한 bin을 탐색하여 재할당, 없으면 Top Chunk에서 분리해서 할당. Top Chunk가 요청한 크기보다 작다면 sysmalloc()함수 호출. sysmalloc() → 시스템에 메모리를 요청해서 Top Chunk를 확장하고 대체. 혹은 brk()나 mmap()을 통해 메모리 할당. free() 함수 호출 libc_free() → mmap으로부터 할당된 메모리일 경우, munmap_chunk()함수를..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.