Это де-факто стандарт в языках Си и Си ++ (и не только в них), что процедуры освобождения ресурсов должны принимать аргументы нулевого указателя и просто ничего не делать. На самом деле, это довольно условное соглашение. Итак, настоящий вопрос здесь: почему это удивляет вас? Что заставляет вас думать, что это должно привести к ошибке? Более того, что заставляет вас думать, что он не сможет скомпилировать ???
Кстати, ваш вопрос, как он сформулирован, кажется, не имеет особого смысла, поскольку ваш код на самом деле не может компилироваться. В предполагаемом объявлении указателя отсутствует тип, который заставит любой компилятор выдавать диагностическое сообщение.