Realloc возвращает NULL

На вход поступает текстовый файл и неинициализированный элемент структуры типа char*. Realloc возвращает NULL, из-за чего это может происходить?

void create(FILE* file, char* element)
{
    if ((element = (char*)calloc(0, sizeof(char))) == NULL)
    {
        fprintf(stdout, "Ошибка выделения памяти!\n");
        return EXIT_FAILURE;
    }

    int idx = -1;
    do
    {
        if (fscanf(file, "%c", (element + idx + 1)) != 1)
        {
            fprintf(stdout, "Ошибка считывания данных из файла!\n");
            return EXIT_FAILURE;
        }
        printf("%d\n", sizeof(element));


        if ((element = (char*)realloc(element, idx + 3)) == NULL)
        {
            fprintf(stdout, "Ошибка считывания данных из файла!\n");
            return EXIT_FAILURE;
        }

        idx++;
    } while (*(element + idx) != '\n');

    *(element + idx) = '\0';

}

Ответы (1 шт):

Автор решения: Harry

Вы сами ответили на свой вопрос -

неинициализированный элемент структуры типа char*

Т.е. вашему realloc поступает команда - измени-ка ты размер блока по некоторому "мусорному" адресу. А там и блока-то никакого нет... Вот он и пытается вам объяснить это доступным ему способом.

→ Ссылка