ビンの初期化は malloc_init_state() 関数で行われます。
以下がソースとなりますね。
malloc.c(https://github.com/MacKomatsu/glibc/blob/release/2.27/master/malloc/malloc.c).
1800 /*
1801 Initialize a malloc_state struct.
1802
1803 This is called from ptmalloc_init () or from _int_new_arena ()
1804 when creating a new arena.
1805 */
1806
1807 static void
1808 malloc_init_state (mstate av)
1809 {
1810 int i;
1811 mbinptr bin;
1812
1813 /* Establish circular links for normal bins */
1814 for (i = 1; i < NBINS; ++i)
1815 {
1816 bin = bin_at (av, i);
1817 bin->fd = bin->bk = bin;
1818 }
1819
1820 #if MORECORE_CONTIGUOUS
1821 if (av != &main_arena)
1822 #endif
1823 set_noncontiguous (av);
1824 if (av == &main_arena)
1825 set_max_fast (DEFAULT_MXFAST);
1826 atomic_store_relaxed (&av->have_fastchunks, false);
1827
1828 av->top = initial_top (av);
1829 }
コメントに書いてますが ptmalloc_init() または _int_new_arena() をコールする際に使用されるらしいです。
bin_at() 関数からビンを指すポンターを取得して、そこから fd と bk ポインターを初期化しています。
Copyright 2018-2019, by Masaki Komatsu