ISO/IEC 9899: TC2 (т.е. стандарт C99), §7.20.3:
Если размер запрашиваемого пробела равен нулю, поведение определяется реализацией: либо возвращается нулевой указатель, либо поведение такое, как если бы размер был некоторым ненулевое значение, за исключением того, что возвращаемый указатель не должен использоваться для доступа к объекту.
Другими словами, malloc (0) может либо возвращать NULL, либо действительный указатель, который я не могу разыменовать.
В чем причина такого поведения?
И не было бы проще просто определить, что malloc (0) приводит к UB?