Я не уверен, почему значение мусора выбрасывается в цикле if, когда я пытаюсь освободить dataToWrite. Он отлично работает в другом цикле. Может ли кто-нибудь помочь мне с этим?Значение мусора отображается при освобождении указателя в C
FILE *readFilePointer = NULL;
Message_buf outputMsgBuffer;
char fileData[PIPE_BUF];
char *dataToWrite=NULL;
readFilePointer = fopen(fileToReadFrom, "r");
if (readFilePointer == NULL)
{
outputMsgBuffer.messageType=1;
dataToWrite=(char *)malloc(strlen(strcat(fileToReadFrom," does not exists!!"))+1);
memset(dataToWrite,0,strlen(dataToWrite));
dataToWrite=strcat(fileToReadFrom," does not exists!!");
strcat(outputMsgBuffer.messageText,dataToWrite);
memset(dataToWrite,0,strlen(dataToWrite)+1);
free(dataToWrite);
}
else
{
//outputMsgBuffer.messageText[0] = '\0';
while (fgets(fileData, sizeof(fileData), readFilePointer) != NULL)
{
dataToWrite=(char *)malloc(sizeof(fileData));
memset(dataToWrite,0,strlen(dataToWrite));
strcpy(dataToWrite,fileData);
strcat(outputMsgBuffer.messageText,dataToWrite);
free(dataToWrite);
}
fclose(readFilePointer);
}
outputMsgBuffer.messageType=1;
outputMsgBuffer.messageLength=strlen(outputMsgBuffer.messageText);
mesg_send(fd,&outputMsgBuffer);
}
Добро пожаловать в переполнение стека! Просить незнакомых людей обнаружить ошибки в вашем коде путем проверки неэффективно. Вы должны идентифицировать (или, по крайней мере, изолировать) проблему, используя отладчик или операторы печати, а затем вернуться с более конкретным вопросом (как только вы сузили его до 10-строчного [тестового случая] (http://sscce.org)). –
какой символ мусор. Как это «брошено»? Что такое «цикл if»? –
Я полностью согласен с Оли, однако, я случайно заметил, что вы злоупотребляете strcat. – Corbin