История изменений
Исправление fsb4000, (текущая версия) :
Было до С23
if new_size is zero, the behavior is implementation defined (null pointer may be returned (in which case the old memory block may or may not be freed), or some non-null pointer may be returned that may not be used to access storage). Such usage is deprecated
Стало в C23
if new_size is zero, the behavior is undefined.
Так что и раньше было и deprecated и implementation defined.
https://open-std.org/JTC1/SC22/WG14/www/docs/n2396.htm#dr_400
Исходная версия fsb4000, :
Было до С23
if new_size is zero, the behavior is implementation defined (null pointer may be returned (in which case the old memory block may or may not be freed), or some non-null pointer may be returned that may not be used to access storage). Such usage is deprecated
Стало в C23
if new_size is zero, the behavior is undefined.
Так что и раньше было и deprecated и implementation defined.