Могут ли функции распределения памяти быть несовместимыми с нулевым размером? - PullRequest
2 голосов
/ 18 октября 2019

В спецификации C говорится о функциях выделения памяти:

Если размер запрошенного пространства равен нулю, поведение определяется реализацией: либо нулевой указательили поведение такое, как если бы размер был некоторым ненулевым значением, за исключением того, что возвращенный указатель не должен использоваться для доступа к объекту.

Все ли функции распределения должны быть согласованы в этомрассматривать? Может ли malloc(0) возвращать ненулевой указатель, а realloc(someptr, 0) возвращает нулевой указатель?

Может ли calloc(0, 0) отличаться от malloc(0)? Для спецификации calloc() было бы просто сказать, что calloc(nmemb, size) эквивалентно malloc(nmemb * size) с последующим обнулением памяти, но эта эквивалентность не является явной.

...