第38章 ビン・インデックスのまとめ

インデックス取得マクロをかなり詳しめに解説してきたので、読者さんもさすがに smallbin_index (sz) とか largebin_index (sz) も覚えちゃったんじゃないですかね?

ビンのインデックスを見つけるためには最終的には以下のマクロを使います。

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

1505 #define bin_index(sz) \
1506   ((in_smallbin_range (sz)) ? smallbin_index (sz) : largebin_index (sz))

1505 行によると bin_index(sz) マクロは smallbin_index(sz) と large_index(sz) を切り分けしているだけです。

in_smallbin_rage(sz) は Small Bin かどうかチェックしていますね。

てなことでビンのインデックスは in_smallbin_range(sz) によって Small Bin か Large Bin のいずれかの処理へ分岐していきます。

Copyright 2018-2019, by Masaki Komatsu