Schemeをつくろう(3) Boehm GC使ってみた
やっぱSchemeにはGC必要だよね。と思って、Boehm GCを使ってみた。
インストール
以下を参考に。
電気系B演習 (言語処理系演習) - Boehm GCの使い方
% ./configure % make % sudo make install
インストール完了。
あ、Binary Hacksを一読しておくと良いかも。
mallocかき集めてきます
mallocを一箇所に集合させます。みんなぁ〜集まれぇ〜。
void *xmalloc(int size) { return malloc(size); } void xfree(void *ptr) { free(ptr); }
集合完了です。
Boehm GCにする。
#include <gc.h> void *xmalloc(int size) { return GC_malloc(size); } void xfree(void *ptr) { /* free(ptr); */ }
とりあえずfreeは残しておくけど何もせず。
コンパイル
呪文のように唱えます。make。
% make list_test gcc -g -lgc -o list_test list.c list_test.c % ./list_test (1 2 3 . 4) (() . 1) (symbol + string-append . Hello-Scheme-World!!)
free消したのに普通に動いてるよ!!
おぉっと
無くても普通に動くみたいだけど、メインに一言いるらしい。
#include <gc.h> int main(void) { GC_INIT(); }
完了。