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鑫爷 : EN 3Q######回复 @LaviLiu : 看不出问题了,打断点一行一行调试吧,观察piAreaShopList指针的变化。######回复 @IM鑫爷 : typedef struct _AreaShopList_T { char HonNO[8]; char ShopCD[12]; } AreaShopList_T;######回复 @LaviLiu : AreaShopList_T的定义是什么样的。######AreaShopListNum这个比HMDetailNum小呀,你malloc的空间不够,while循环越界了######while (i < AreaShopListNum){} 改成这样也没用 , 你说的这个也想到了 但是也不行###### 实在查不到原因就改成数组吧,
不要用指针了. ######可以排除法,将中间处理步骤都注释掉,再看是否出问题,是否可能是 TimeRoutingW弄出了问题######TimeRoutingW 注释掉也不起作用######检查下 pioHMDetail 和piAreaShopList里面元素数目情况吧,在循环中有没有可能其中一个越界!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。