что возвращает malloc (0)? [Дубликат]
На этот вопрос уже есть ответ:
какой смысл в malloc (0)? 16 ответовЧто значитmalloc(0)
возвращается? Будет ли ответ такой же дляrealloc(malloc(0),0)
?
#include<stdio.h>
#include<malloc.h>
int main()
{
printf("%p\n", malloc(0));
printf("%p\n", realloc(malloc(0), 0));
return 0;
}
Выход из Linux GCC:
manav@manav-workstation:~$ gcc -Wall mal.c
manav@manav-workstation:~$ ./a.out
0x9363008
(nil)
manav@manav-workstation:~$
Выход постоянно меняется дляmalloc(0)
. Это стандартный ответ? И почему кому-то будет интересно получить такой указатель, кроме научных исследований?
РЕДАКТИРОВАТЬ
Еслиmalloc(0)
возвращает фиктивный указатель, тогда как работает следующее:
int main()
{
void *ptr = malloc(0);
printf("%p\n", realloc(ptr, 1024));
return 0;
}
РЕДАКТИРОВАТЬ
Следующий код выводит «возможно» для каждой итерации. Почему это не должно подвести?
#include<stdio.h>
#include<malloc.h>
int main()
{
int i;
void *ptr;
printf("Testing using BRUTE FORCE\n");
for (i=0; i<65000; i++)
{
ptr = malloc(0);
if (ptr == realloc(ptr, 1024))
printf("Iteration %d: possible\n", i);
else
{
printf("Failed for iteration %d\n", i);
break;
}
}
return 0;
}