#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)
我写的“这里”放在哪里。
如果您想指出我的代码中的另一个问题,我很高兴学到一些东西。