Ситуация B более сложная, потому что ptr2 потенциально указывает на освободившееся пространство. Или нет. Это зависит от того, может ли оно быть перераспределено. ptr2 не должен использоваться после realloc в B.

спользовании realloc память автоматически освобождается? Или нужно использовать free с realloc? Что из следующего является правильным?

//Situation A
ptr1 = realloc(ptr1, 3 * sizeof(int));

//Situation B
ptr1 = realloc(ptr2, 3 * sizeof(int));
free(ptr1);
ptr1 = ptr2;

Ответы на вопрос(5)

Ваш ответ на вопрос