はるか遠くの関数がallocateした領域でも
領域先頭アドレスさえ間違えなければ
サイズとか分からなくてもきちんとfreeできるものですか

char* p = NULL;

/* 4〜5層下の関数がpにmallocする */
test_func(p);

/* 大きさとか知らんけど解放 */
free(p);