Новый код все еще пропускает исходное распределение, если происходит сбой realloc.Я ожидаю, что большинство реализаций никогда не прекратят сокращать блок, но это разрешено.Правильный способ вызова realloc, будь то увеличение или уменьшение блока, void * tmp = realloc (myPointer, 50 * sizeof (int));if (! tmp) {/ * как-то обрабатывает ошибку.myPointer по-прежнему указывает на старый блок, который все еще выделен * /} myPointer = tmp ;.- Стив Джессоп 48 минут назад
Эй, я не могу понять, как ответить на ваш комментарий, извините.
Нужно ли приводить tmp к типу myPointer?В этом случае мне нужно написать
myPointer = (int*)tmp
Кроме того, в этом случае, когда я освобождаю (myPointer) Память, на которую указывает tmp, также будет освобождена, верно?Так что не надо делать
free(myPointer)
free(tmp)