У меня есть следующий код.
char *ptr2 = (char*)malloc(0);
char *ptr = (char*)malloc(sizeof(char) * 10);
memcpy(ptr, "Gunasek\0", 8);
ptr = (char*) realloc(ptr, 0);
printf("ptr = %p, ptr2 = %p\n", ptr, ptr2);
//ptr = (nil), ptr2 = 0x602420 (Output)
free(ptr);
free(ptr);//Works fine
free(ptr);//Works fine
free(ptr2);
free(ptr2);//Fails
free(ptr2);
Может ли кто-нибудь объяснить, почему malloc (0) не разрешает бесплатно более одного раза, но realloc (ptr, 0) делает?