Когда-то давным-давно существовали реализации 'free ()', которые вылетали при нулевом указателе на free. Это относится только к реализациям, предшествующим стандарту C89 (C90), которые не были изменены для решения проблемы с тех пор.
По моему опыту, по существу ни одной из этих реализаций не осталось (и не должно быть), поэтому теперь безопасно освобождать нулевые указатели.
Если у вас есть какие-либо требования к портированию на очень странные и древние системы, то, возможно, вам все же следует быть осторожным. С другой стороны, если бы у вас были такие системы для беспокойства, вы, вероятно, знали бы об этой проблеме (и целом ряде других проблем) - или были бы общие знания о коде, который указывает на это.