我可不可以不要寫這種 code?

#define NUM 5

int main()
{
    FooParam param;
    memset(&param, 0, sizeof(param));
    param.size = sizeof(param);
    param.num = NUM;
    param.results = (FooResult**)malloc(NUM * sizeof(FooResult*));;
    FooResult* results_body = (FooResult*)malloc(NUM * sizeof(FooResult));
    for (int i = 0; i < NUM; ++i) {
        param.results[i] = &(results_body[i]);
    }
    // param didn't take results_body with it, who could free(results_body)??

    if (!FooRun("filename", &param)) {
        goto err_out;
    }
    ShowFooResult(param.results);

err_out:
    if (param.results) {
        free(param.results[0]); // Why don't we free(param.results[1]), too???
        free(param.results);
    }

    return 0;
}

真是難看懂的 code。