這個代碼在裸機運行情況下運行 會出現過一會kk字符串為空的問題 但不進入hardfault handler
uint8_t?*notify_str?=?(uint8_t?*)cJSON_PrintUnformatted(root);

??????unsigned?int?notify_len?=?strlen(notify_str);
??????printf("notify_len:%d?\r\n",notify_len);




??????snprintf(num_string,sizeof(num_string),"%d",notify_len);


??????sprintf(num_stringg,"0,%s,",num_string);


??????sprintf(temp,"AT+GATTSEND=%s",num_stringg);

??????//unsigned?char?output[370];

??????unsigned?char?*j?=?malloc(31);
??????if(j?==?NULL)
????????????{
??????????printred("malloc?failed\r\n");
????????????}


??????j?=?temp;

??????//sprintf(output,temp,j);
??????printf("j:????%s?\r\n",j);

??????char?*result?=?malloc(strlen(j)+strlen(notify_str)+1);
??????printred("result:%p?\r\n",result);
??????if(result?==?NULL)
??????{
??????????printred("malloc?failed\r\n");
??????}

??????strcpy(result,j);
??????char?*jj?=?strcat(result,notify_str);


??????char?*res1?=?malloc(strlen(jj)+strlen("\r\n")+1);
??????if(res1?==?NULL)
??????{
??????????printred("malloc?failed\r\n");
??????}



??????strcpy(res1,jj);
??????char?*kk?=?strcat(res1,"\r\n");




??????//printf("output:%s?\r\n",strcat());

??????//uint8_t?*output_s?=?strcat(result,notify_str);
??????//output_s?=?strcat(output_s,"\r\n");

??????UART0_SendString(kk,strlen(kk));
??????printf("output_s:%s\r\n",kk);
??????printf("strlen?output_s:%d\r\n",strlen(kk));


??????free(result);
??????//free(j);
??????free(res1);


①不建議使用C語言的malloc函數,可能有內存碎片問題。建議使用系統(tǒng)的申請和釋放:tmos_msg_allocate;

②kk作為返回值是地址,你的目的應該是將res1補充回車換行,應該是直接sendstring res1。同時打印地址用%s也是有問題的。


破案了?

unsigned?char?*j?=?malloc(31);
??????if(j?==?NULL)
????????????{
??????????printred("malloc?failed\r\n");
????????????}


??????j?=?temp;

這里導致內存泄漏 用IDE的cppcheck查出問題 memory leak 問了百度的文心一言


image.png

如圖


只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频