Предположим, я наткнулся на экземпляр в программе, где я бы либо выслал NULL-указатель, либо сначала проверил, был ли он NULL и пропустил вызов функции free()
.Бесплатный нуль-указатель или в первую очередь?
Было бы более эффективным просто освободить указатель NULL? Я немного искал и, видимо, для реализаций пост C89, безвредно освобождать указатель NULL, поэтому решение сводится к эффективности.
Моя презумпция заключается в том, что при вызове free()
может возникнуть немало накладных расходов. Таким образом, возможно, простая логическая проверка перед вызовом функции free()
вполне необходима.
ТЛ; дг версии
Что происходит внутри, когда вызов free()
сделан, что может сделать его более или менее эффективным первым проверить, является ли или NULL указатель перед освобождением?
Что? Tldr не имеет никакого отношения к вашему вопросу! –
Сделал это немного конкретнее, но это были служебные данные, связанные с вызовом 'free()', с которым я был связан. – sherrellbc
free (NULL) гарантированно будет no-op с c89. BTW: не слишком одержимы работой. Единственное различие заключается в том, что NULL-проверка выполняется внутри или снаружи функции free(). – wildplasser