初级会员

- 积分
- 146
- 金钱
- 146
- 注册时间
- 2011-8-2
- 在线时间
- 33 小时
|
20金钱
本帖最后由 Fi_Sun 于 2016-6-29 13:21 编辑
现象是接收到第一次数据的时候内存不明显变化,第二次接收数据的时候,内存变为占用1%,第三次变为2%以此类推下去,结果连续接收到一定次数后,内存就占用满了,程序死机,该段程序在UCOSII里面运行的!有哪位同志遇到这样的问题希望能给个解决问题的思路,谢谢!
[mw_shl_code=c,true]const unsigned char *month[12]={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
void RcvDate()
{
char t,*buffer,*time,*first,*second,*value1,*value2,m[3];
USART1_GetRcvData(buffer, USART1_GetRcvNum());
USART1_Clear();
buffer = mymalloc(600);
printf("\r\n½óêÕμ½μÄêy¾YÎa£o%s\r\n\r\nêy¾Y3¤¶èÎa£o%d\r\n",buffer,strlen(buffer));
if((NULL != strstr(buffer, "HTTP/1.1 200 OK")))//
{
time = mymalloc(30);
time = (char *)(strstr(buffer, "Date: ")+strlen("Date: "));
get_info.w_year = (time[12]-0x30)*1000+(time[13]-0x30)*100+(time[14]-0x30)*10+(time[15]-0x30);
for(t = 0;t<3;t++)//Ñ-»·¶áè¡3öÔ·YμÄDÅÏ¢
{
m[t] = time[8+t];//×a′æèëÖD¼ä±äá¿
}
for(t = 0;t<12;t++)//óëêy×éÖDμÄêy¾YÑ-»·Æ¥Åä
{
if((NULL != strstr(month[t],m)))//èç1ûÆ¥Åä3é1|
{
break;//ìø3öÑ-»·
}
}
t = t+1;//μÃμ½μÄêy¾Y¼ó1ÔòμÃμ½êμ¼êμÄÔ·Yêy¾Y
printf("\r\n½óêÕμ½μÄÔ·YÎa£o%d\r\n\r\n",t);
get_info.w_month = t;//½«Ô·Yêy¾Y′æèë½á11ìå±äá¿
get_info.w_date= (time[5]-0x30)*10+(time[6]-0x30);
get_info.hour= (time[17]-0x30)*10+(time[18]-0x30);
get_info.min= (time[20]-0x30)*10+(time[21]-0x30);
get_info.sec= (time[23]-0x30)*10+(time[24]-0x30);
time[29] = '\0';
printf("\r\n½óêÕμ½μÄê±¼äêy¾Y£o%s\r\n\r\n",time);
first = (char *)(strstr((time+30), "\"value\"\:")+strlen("\"value\"\:"));
printf("\r\n½óêÕμ½μÄê±¼äêy¾Y£o%s\r\n\r\n",first);
value1 = mymalloc(10);
for(t = 0;*first!='}';t++)//êy×ÖÅD¶Ï} èç1ûêÇ×Ö·û′®ÅD¶Ï¡°
{
value1[t] =*first;
first++;
}
value1[++t] = '\0';
get_info.value1 = atoi(value1);//32λ3¤ÕûDíêy¾Y
printf("\r\n½óêÕμ½μÄêyÖμÎa£o%d\r\n\r\n",get_info.value1);
first = (char *)(first+9);//êy×Ö¼ó9 ×Ö·û′®¼ó10
for(t = 0;*first!='"';t++)
{
get_info.id1[t] =*first;
first++;
}
get_info.id1[++t] = '\0';
printf("\r\n½óêÕμ½μÄIDoÅÎa£o%s\r\n\r\n", get_info.id1);
second = (char *)(strstr((first+10), "\"value\"\:")+strlen("\"value\"\:"));//×Ö·ûààDí ¼ó1 ·Ç×Ö·ûààDí2»¼ó
value2 = mymalloc(10);
for(t = 0;*second!='}';t++)//êy×ÖÅD¶Ï} èç1ûêÇ×Ö·û′®ÅD¶Ï¡°
{
value2[t] =*second;
second++;
}
value2[++t] = '\0';
get_info.value2 = atoi(value2);//32λ3¤ÕûDíêy¾Y
printf("\r\n½óêÕμ½μÄêyÖμÎa£o%d\r\n\r\n",get_info.value2);
second = (char *)(second+9);//êy×Ö¼ó9 ×Ö·û′®¼ó10
for(t = 0;*second!='"';t++)
{
get_info.id2[t] =*second;
second++;
}
get_info.id2[++t] = '\0';
printf("\r\n½óêÕμ½μÄIDoÅÎa£o%s\r\n\r\n", get_info.id2);
}
myfree(time);
myfree(first);
myfree(second);
myfree(value1);
myfree(value2);
myfree(buffer);
clear_buffer(buffer);
}
[/mw_shl_code] |
|