Boehm GC
#include <stdio.h>
#include <string.h>
#include "gc/gc.h"
#define malloc GC_malloc
int main(void) {
char *c;
c = (char*)malloc(sizeof(char*) + 1);
strcat(c, "hoge");
strcat(c, "fuga");
strcat(c, "foobar");
printf("%s\n", c);
//free(c);
return 0;
}
本来であればmallocしたポインタに対してfreeをしないとメモリが開放されずにメモリリークを起こす(#defineをコメントアウトするとわかる)。valgrind等を使って確認するとよい GC_mallocを使う事でmallocしたのを明示的に開放したりしなくてもGCによりメモリが開放されるっぽい
余談
Ubuntu等の環境上でやる場合に
gcc main.c -lgc
のように-lgcを適切な場所で指定しないとundefined reference to
等のコンパイルエラーが発生する