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 поступает команда - измени-ка ты размер блока по некоторому "мусорному" адресу. А там и блока-то никакого нет... Вот он и пытается вам объяснить это доступным ему способом.