函数free()出错?!

Elle210 2004-05-06 10:52:07
我写一个词法分析的程序(一部分)
void main()
{
FILE *fp1,*fp2;//fp1是源程序的文件,fp2是输出结果文件
char ch;//接收每次从文件中读取的字符
char *buff=(char*)malloc(256);
int i,line,find;
char *id;//存以字母开头的
char *dig;//数字
if((fp1=fopen("source.txt","r"))==NULL)
{
printf("无法打开此文件!\n");
return;
}
if((fp2=fopen("result.txt","w"))==NULL)
{
printf("无法创建该文件!\n");
return;
}
fprintf(fp2,"单 词 值\n");
while(!feof(fp1))
{
fscanf(fp1,"%c",&ch);
if(ch==' '||ch=='\t')//过滤掉空格和tab
;
else if(ch=='\n')//回车换行符,记录行数,为下面进行错误判断,
line++;
else if(IsAlpha(ch))
{//判断是否是标识符
i=0;
buff[i++]=ch;
fscanf(fp1,"%c",&ch);
while(IsAlpha(ch)||IsDigit(ch))
{
buff[i++]=ch;
fscanf(fp1,"%c",&ch);
}
fseek(fp1,-1L,SEEK_CUR);//文件指针后退一个字节
id=(char*)malloc(i);
copy(id,buff,i);//buff太大,只是一个临时的
find=search(id);
if(find)
{//找到表中的关键字
fprintf(fp2,"%s %d\n",id,find);
free(id);//释放,下一个还要用
}/////!!!在这个free这里突然出现一个警告的对话框:Debug Error!
DAMAGE: after Normal block (#42) at 0x00430110.,,这是怎么回事,free有什么问题吗(前面的用f10都是对的)


...全文
120 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenqing1128 2004-05-07
  • 打赏
  • 举报
回复
id=(char*)malloc(i);
应该是id=(char*)malloc(i*sizeof(char));
applebomb 2004-05-07
  • 打赏
  • 举报
回复
你看看是否有什么关于free函数的.H文件没有include进来?

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧