что возвращает 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;
}

Ответы на вопрос(1)

Ваш ответ на вопрос