Не могу понять, в чем заключается ошибка. Программа на данном этапе обрабатывает строки из файла. Дан файл, содержащий в себе инструкции вида:
prior=0 task='Task 1'
prior=0 task='Task 3'
prior=2 task='Task 4'
prior=2 task='Task 5'
Я считываю в переменную temp значение prior, а в строку msg_buf строку, содержащуюся в ' ';
Память под строку выделяю правильно, в конце строки добавляю '\0', но после выполнения функции free(msg_buf) программа падает.... Почему так происходит? Вот код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "message.h"
void message_processing(FILE *file)
{
int i, j;
int temp = 0, size = 0;
char str_buf[BUFSIZ] = {0};
char *msg_buf = NULL;
Message message;
while(!feof(file))
{
fgets(str_buf, sizeof(str_buf), file);
strtok(str_buf, "\n");
i = 6;
while(isdigit(str_buf[i]))
{
temp = temp * 10 + (str_buf[i++] - '0');
}
i += 7;
for(; i < strlen(str_buf) - 1; i++)
{
//printf("%c", str_buf[i]);
msg_buf = (char *)realloc(msg_buf, ++size * sizeof(char) + 1);
msg_buf[size - 1] = str_buf[i];
}
msg_buf[size] = '\0';
printf("%s\n", msg_buf);
free(msg_buf);
}
}