经过检查发现,并不是paho mqtt和mymqtt的软件包有泄露内存的问题,而是我自己用Cjson产生数据的时候,导致的内存泄露,代码可以参如下。
char *JSONMakeFrame(void)
{
char *p;
char string[20] = {0};
cJSON *json_root = cJSON_CreateObject(); /* 创建根索引 json 对象 */
cJSON_AddStringToObject(json_root, "id", "xxx");
cJSON_AddStringToObject(json_root, "sn", "xxxx");
p = cJSON_PrintUnformatted(json_root);/* 生成无格式 json 字符串 */
free(p); //这个free(p),这样用不知道有没有问题,目前我的程序是没问题,但是不用还是内存会泄露
cJSON_Delete(json_root); //此处一定要释放申请的内存。如果有其他的cJSON也要一并释放
return p;
}
到现在我用过了paho-mqtt,my-mqtt,kawaii-mqtt
paho-mqtt使用中还是会有hard falut产生,
ma-mqtt目前情况还行,看看后面会不出问题
kawaii-mqtt,在RTT上运行,能连接通讯,会报AT socket timeout的错,后面没有继续使用。
经过检查发现,并不是paho mqtt和mymqtt的软件包有泄露内存的问题,而是我自己用Cjson产生数据的时候,导致的内存泄露,代码可以参如下。
char *JSONMakeFrame(void)
{
char *p;
char string[20] = {0};
cJSON *json_root = cJSON_CreateObject(); /* 创建根索引 json 对象 */
cJSON_AddStringToObject(json_root, "id", "xxx");
cJSON_AddStringToObject(json_root, "sn", "xxxx");
p = cJSON_PrintUnformatted(json_root);/* 生成无格式 json 字符串 */
free(p); //这个free(p),这样用不知道有没有问题,目前我的程序是没问题,但是不用还是内存会泄露
cJSON_Delete(json_root); //此处一定要释放申请的内存。如果有其他的cJSON也要一并释放
return p;
}
到现在我用过了paho-mqtt,my-mqtt,kawaii-mqtt
paho-mqtt使用中还是会有hard falut产生,
ma-mqtt目前情况还行,看看后面会不出问题
kawaii-mqtt,在RTT上运行,能连接通讯,会报AT socket timeout的错,后面没有继续使用。
举报