Как освободить память, связанную с массивом я с именем "arr"?
Ответ 1
Локальные переменные автоматически освобождаются, когда функция заканчивается, вам не нужно освобождать их самостоятельно. Вы освобождаете только динамически выделенную память (например, используя malloc), как она выделяется в куче:
Вы ничего не освобождаете. Поскольку вы никогда не приобретали какие-либо ресурсы динамически, вам ничего не нужно или даже разрешено бесплатно.
(Точно так же, как вы говорите int n = 10;: не задействованы динамические ресурсы, которыми вы должны управлять вручную.)
Ответ 3
Память, связанная с arr, автоматически освобождается, когда arr выходит за пределы области видимости. Это либо локальная переменная, либо выделено статически, но она не динамически распределена.
Простым правилом для вас является то, что вы должны только каждый вызов free() указатель, который был возвращен вызовом malloc, calloc или realloc.