if (bFullCourse) {
long AreaShopListNum = 0;
if (piAreaInfo->SPKBN == 0)
AreaShopListNum = HMDetailNum - 2;
else
AreaShopListNum = HMDetailNum - 3;
AreaShopList_T *piAreaShopList = (AreaShopList_T*)malloc(sizeof(AreaShopList_T) * AreaShopListNum);
int i = 0;
HMDetail_T* pHMDetail = pioHMDetail;
AreaShopList_T *pAreaShopList = piAreaShopList;
while (i < HMDetailNum) {
if (strcmp(piBaseInfo->BaseCD, pHMDetail->DlvCD) == 0) {
i++;
pHMDetail++;
continue;
}
strcpy_s(pAreaShopList->HonNO, pHMDetail->HonNO);
strcpy_s(pAreaShopList->ShopCD, pHMDetail->DlvCD);
i++;
pHMDetail++;
pAreaShopList++;
}
//int ret = TimeRoutingW(piBaseInfo, ShopInfoNum, piShopInfo, 1, piAreaInfo, //AreaShopListNum, piAreaShopList,pioHMDetail, pszOutputFile, false, bCvs, bWeekExchange);
int ret =0;
free(piAreaShopList); // 这里出错 求教高手 TimeRoutingW()函数注释掉,ret给固定返回还是错
return ret;
}
else { ...
1、确保你的 TimeRoutingW函数里面是否修改过 piAreaShopList指针的头信息(比如偏移负数)。
2、 piAreaShopList参数是不是引用传递,而在函数内存修改了这个变量(如果是c,请忽略这个原因)
回复 @LaviLiu:找出问题了记得回复一下,,让我也学习学习。回复 @IM鑫爷:EN3Q回复 @LaviLiu:看不出问题了,打断点一行一行调试吧,观察piAreaShopList指针的变化。回复 @IM鑫爷:typedefstruct_AreaShopList_T{charHonNO[8];charShopCD[12];}AreaShopList_T;回复 @LaviLiu:AreaShopList_T的定义是什么样的。AreaShopListNum这个比HMDetailNum小呀,你malloc的空间不够,while循环越界了while(i<AreaShopListNum){}改成这样也没用,你说的这个也想到了但是也不行实在查不到原因就改成数组吧,
不要用指针了.
可以排除法,将中间处理步骤都注释掉,再看是否出问题,是否可能是 TimeRoutingW弄出了问题TimeRoutingW注释掉也不起作用检查下 pioHMDetail和 piAreaShopList里面元素数目情况吧,在循环中有没有可能其中一个越界!版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
你好,我是AI助理
可以解答问题、推荐解决方案等
评论
全部评论 (0)