collectionといっても、dfsして到達できないものの使用中フラグを倒すだけなので実際やるだけ。世代別だとかincrementalだとかに手をだすと楽しくなりそう。次はcでlisp処理系を書きたいなと思っている。interpreterの上でunlambdaのquineを動かして計測した。他の場合は特に調べていない雑な計測であることに注意。gc入れると速度も改善してるのは面白い。実装は載せておくが、gcの素人が書いたものなので、これを参考にするのはおすすめしない。この記事は、gc書くの面白いよ、意外と簡単だったよ、ということを言いたい記事である。確保した領域の列と、今だいたいとこまで使ったかを指す変数、開放してはいけない対象の列を、とりあえずglobal変数として確保。roots;構造体内に印を付ける場所を埋め込む。mark;#endif};到達できる対象に印を付けてまわる関数。mark_recursively(t->y);}gcとは、rootから到達可能な対象に印を付けてみて、付いてないやつを削除する。...}次の使用可能な領域を探す関数。これは単に線形探索する。}}newやmallocの代わりに使う関数を作り、これを使う。探してなければgcをする。