首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

了,malloc函数调试模式下能够正常执行,直接运行就会报错了

2013-08-16 
求助了,malloc函数调试模式下能够正常执行,直接运行就会报错了!int read_map(MAP *FIRST){MAP *TEMP (MA

求助了,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;
}


求分析,人多力量大啊,大家帮忙分析分析,在调试模式下就能够正常执行完并且最后得出“文件读取完整”的字符串,without debug运行的话程序就挂了,蛋疼0 0,这个是程序出问题的部分,实在调不出来了,求帮助,有好心人可以加我QQ。。。。 malloc 调试
[解决办法]
string = (char *)malloc(sizeof(NEXT->size - 12));
申请NEXT->size-12个字节的内存,sizeof不需要。

热点排行