#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等のコンパイルエラーが発生する