最少チャンクサイズを算出するマクロは 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