Вызов free для указателя, равного nullptr, не приводит к ошибке или аварийному завершению программы. Стандарт языка C и C++ гарантируют такое поведение. Функция free просто ничего не делает в этом случае.
free
nullptr
c