4. Выделение памяти

int *bar(int y)
{
    // do smth
    return malloc(y * sizeof(int));
}

int *foo(int x)
{
    if (CONDITION)
    { // do smth
        return bar(x);
    }
    return NULL;
}

int main(void)
{
    int *a = foo(5);
    // do smth
    free(a);
    return 0;
}
Вариант реорганизации и исправления кода
int bar(int *a, int y)
{
    // don't alloc memory
    return RET_CODE;
}

int foo(int *a, int x)
{
    if (CONDITION)
    { // do smth
        return bar(a, x);
    }
    return 1;
}

int main(void)
{
    int *a = malloc(5 * sizeof(int));
    if (foo(a, 5))
    {
        // error handling
        return 1;
    }
    // do smth
    free(a);
    return 0;
}

Last updated