#include <stdio.h>
#include <stdlib.h>
int main()
{
char *buffer=malloc(1);
char *temporary=malloc(1);
int length=0;
signed int character;
for(length=0;(character = getchar())!=EOF;length++)
{
buffer[length]=character;
if((length==0) || ((length%1000)==0))
{
temporary=realloc(buffer,length+1001);
if(temporary!=NULL)
{
buffer= temporary;
}
else
{
printf("Error: Out of memory!\n");
free(temporary);
free(buffer);
return 1;
}
}
}
buffer[length]='\0';
length-=1;
while(length>=0)
{
printf("%c",buffer[length]);
length--;
}
printf("\n");
free(buffer);
//////////////free(temporary); //(HERE)
return 0;
}
Моя программа должна читать строку или текстовый файл ввода, хранить его и затем распечатывать обратно, что работает. Я просто не понимаю, почему я не могу сделать free
временное значение в конце. Он не работает с double free error
.Проблемы с распределением памяти
Хотелось бы знать, почему я не могу положить free(temporary)
, где я написал «здесь».
Если вы хотите указать еще одну проблему в моем коде, я рад чему-то научиться.
Если 'realloc' терпит неудачу, ваше предложение просочится. –
@ KerrekSB, вы правы, и я исправлю это. – steveha