image.png

개념

힙에서 저장된 예시

image.png

묵시적 가용 리스트에서 free block 찾기

가용 블록의 분할

image.png

void addblock(ptr p, int len) {
  int newsize = ((len + 1) >> 1) << 1;  // round up to even
  int oldsize = *p & -2;                // mask out low bit
  *p = newsize | 1;                     // set new length
  if (newsize < oldsize)
    *(p+newsize) = oldsize - newsize;   // set length in remaining
}                                       //   part of block

가용블록 free

void free_block(ptr p) { *p = *p & -2 }

image.png

연결