2015-06-01から1ヶ月間の記事一覧

malloc読んでみた2 getpagesizes

では /usr/src/lib/libc/gen/getpagesizes.cを見てみましょう。 intgetpagesizes(size_t pagesize[], int nelem){ static u_long ps[MAXPAGESIZES]; static int nops; size_t size; int i; if (nelem < 0 || (nelem > 0 && pagesize == NULL)) { errno = EIN…

malloc読んでみた1 initからpagesizeまで

freebsdのmalloc.cを読んで見ましょう。 場所は /usr/src/lib/libc/stdlibの中にあります。 ヘッダーはusr/src/sys/sys/malloc.hですね。 では見てみましょう! スタート地点はもちろん void * malloc(size_t size) (5281行) ですよね。 この中でまず目につ…

赤黒木をやってみよう 2

ちょっと複雑な挿入 前回挿入をしたのはいつも大きい数字だったので比較的 単純にいきました。今度は少し複雑な挿入をやってみよう。 ルール 赤の子に赤が来ることはできない。 赤の子に赤が来るパターンとはどのようなものでしょうか? 赤の右の子が赤 赤の…

赤黒木をやってみよう

赤黒木のルールは ルートは常に黒 新ノードは赤で右に追加 右下の子だけが赤の時左回り 両方の子が赤の時上下の色を変える まずはルートに2を挿入 右下が赤なので左回り。 ルートは黒に 次のノードを挿入 両方の子が赤なので色を交換 ルートは黒に ノードを…