Почему malloc(0) возвращает ненулевой адрес в Windows?

Приведенный ниже код возвращает адрес при выполнении в Windows, хотя я ожидал, что он вернет NULL.

int main()
{
   char *ptr = NULL;
   ptr = malloc(0);
   printf("malloc returned = %u\n", ptr);

}

Что могло побудить к такой реализации malloc? Есть ли за этим какая-то причина?

Так как это 0-байтовая память, я не экспериментировал с записью данных. Но можно ли вообще использовать эту память для чего-нибудь?

11
задан bernie 15 March 2012 в 15:38
поделиться