c语言执行malloc死机,了,malloc函数调试模式下能够正常执行,直接运行就会报错了...

求助了,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不需要。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值