У меня возникла странная проблема, когда я получаю ошибку сегментации при попытке закрыть файл. Данные записываются в файл правильно, может ли быть какое-то состояние гонки между fflush и fclose?C - Ошибка сегментации при закрытии файла
//main.c
#define filename "/home/test.txt";
char fbuf[255];
sprintf(fbuf, "%s, %f, %f,%f \n", "big", 8.0,0.0,0.8);
sendFile(&fbuf, sizeof(fbuf), (void *)filename);
static void
sendFile(void *data, int size, char *pName)
{
FILE *pFile = fopen(pName,"a");
char *buf = NULL;
buf = (char *)malloc(255);
memcpy(buf, data, sizeof(char *)*size);
if(pFile == NULL) {
logger(LOG_INFO, "Error opening file\n");
}
else {
fwrite(buf, 1, strlen(buf), pFile);
fflush(pFile);
fclose(pFile);
}
free (buf);
}
Любая помощь или предложения приветствуются.
Почему, по вашему мнению, это 'fclose', что вызывает segfault? –
Пожалуйста, не выдавайте результат malloc. – Martin
Почему вы выделяете 255 байтов для 'buf', а' size' легко доступен? Не мог ли он переполнить его? –