第33章 最少チャンクサイズと最少割り当てサイズ

 最少チャンクサイズを算出するマクロは MIN_CHUNK_SIZE です。

malloc.c(https://github.com/MacKomatsu/glibc/blob/release/2.27/master/malloc/malloc.c). 

1190 /* The smallest possible chunk */
1191 #define MIN_CHUNK_SIZE        (offsetof(struct malloc_chunk, fd_nextsize))
1192

 offsetof は C/C++ の関数で、以下のような宣言となっています。

//<cstddef>
#define offsetof(type, member)

 つまり型の開始バイトから、型内のメンバーまでのオフセットを算出します。

 もう一つは最少の割り当てサイズです。

malloc.c(https://github.com/MacKomatsu/glibc/blob/release/2.27/master/malloc/malloc.c). 

1193 /* The smallest size we can malloc is an aligned minimal chunk */
1194
1195 #define MINSIZE  \
1196   (unsigned long)(((MIN_CHUNK_SIZE+MALLOC_ALIGN_MASK) & ~MALLOC_ALIGN_MASK))

 この MINSIZE はキャッシュ周りで繰り返し出てきますね。

 説明は後でするので、ここではそういうものがあったぐらいの理解でご勘弁をば… (´・ω・`)

Copyright 2018-2019, by Masaki Komatsu