求助了,malloc函数调试模式下能够正常执行,直接运行就会报错了!
int read_map(MAP *FIRST)
{
MAP *TEMP = (MAP *)malloc(sizeof(MAP));
char *string;
long size_file;
MAP *NOW = FIRST;
NOW -> NEXT = NULL;
if(open_map()==0)
return 0;
else
{
if(fseek(fp,0,2)==0)
size_file = ftell(fp);
fseek(fp,0,0);
while(1)
{
MAP *NEXT = NULL;
NEXT = (MAP *)malloc(sizeof(MAP));
if(fread(&TEMP->size,2,1,fp)==0)
{
free(NEXT);
break;
}
if(fread(&TEMP->LINK,4,1,fp)==0)
{
free(NEXT);
break;
}
if(fread(&TEMP->namesize,2,1,fp)==0)
{
free(NEXT);
break;
}
if(fread(&TEMP->information,4,1,fp)==0)
{
free(NEXT);
break;
}
STRUCT_exchange(TEMP,NEXT);
if(NEXT->size - 12>0)
{
string = (char *)malloc(sizeof(NEXT->size - 12));
if(fread(string,NEXT->size - 12,1,fp)==0)
{
free(NEXT);
break;
}
}
NEXT->string = string;
NOW->NEXT = NEXT;
NEXT->NEXT = NULL;
NOW = NEXT;
printf("%d\t%d\t",NEXT->size,NEXT->LINK);
}
if(ftell(fp) == size_file)
printf("文件读取完整\n");
else
printf("文件读取不完整\n");
}
fclose(fp);
return 1;
}