Boehm GC (を Visual C++ 8 で使用する時のメモ)

早速使ってみましたよ。

  1. A garbage collector for C and C++ から gc6.7.tar.gz をダウンロードして、解凍
  2. お好きな Makefile を使ってビルドします。自分は VC8 を使用したので NT_MAKEFILEMakefile にリネームして nmake しました
  3. さくっとビルド終了……のはずがエラーが!
  4. VC8 (のリソースコンパイラ) には -Td オプションが使えないらしい。面倒なので Makefile(NT_MAKEFILE) の 45 行目にある $(cvars) を削除
  5. 警告はたくさん出るけれどとりあえずビルドは成功

準備ができたので早速使ってみました。

>

#define GC_NOT_DLL
#include <gc/gc_cpp.h>
#pragma comment(lib, "gc.lib") // gc
#pragma comment(lib, "user32.lib") // gc.lib の中で MessageBox を呼ぶので必要

#include <iostream>
using namespace std;

struct object : public gc_cleanup {
object() { cout << "ctor"; }
~object() { cout << "dtor" ; }
};

int main(int, char*[])
{
for(int i = 0; i < 5000; ++i)
{
object* p = new (GC) object;
}
return 0;
}