エントリーの編集
![loading...](https://b.st-hatena.com/bdefb8944296a0957e54cebcfefc25c4dcff9f5f/images/v4/public/common/loading@2x.gif)
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
![アプリのスクリーンショット](https://b.st-hatena.com/bdefb8944296a0957e54cebcfefc25c4dcff9f5f/images/v4/public/entry/app-screenshot.png)
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
自前LISPのGCの実装
昨日の続きで自分でLISPを実装した話をしていきます。 今回の実装でいちばんバグが多かったのは今日話す... 昨日の続きで自分でLISPを実装した話をしていきます。 今回の実装でいちばんバグが多かったのは今日話すガーベジコレクタ(GC)ですね GCとは動的に取ってきたメモリ領域を使われなくなった部分だけ開放するというものです。 まず、このような処理系を実装するのは初めてなので自分は王道がわかりませんでした。 それなので、静的記憶域、動的記憶域(スタック)と関数テーブルの中を探索してここは使われてますよっていう、チェックをつけました。 しかし、これだけでは変数が参照として持っているものが開放されてしまうので、チェックしたところの中の値を調べて参照ならまたその中を調べるを再帰的に繰り返すことで、必要なところ全てにチェックがつきました。 そして、これをコンパクションつまり、詰めて行きます。 そして、実行したら動きました。 しかし、GCを動かしたあとにたまに不具合が。 テストをいっぱいしていると不具合が起