完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我在使用paho mqtt和mymqtt这两个软件包的时候,存在内存泄露问题。 每次mqtt发送数据前后后,用free查看内存 total memory: 441216 发送Mqtt数据4次 massage lenth:52 发送后内存情况: total memory: 441216 可以看到used memory在缓慢增加,如果数据量一大,运行一段时间后就必然占满内存导致报错。 请问大家,有没有遇到这样的情况?要如何解决,或者有什么其他mqtt的包推荐,不会有这样的问题? |
|
相关推荐
4个回答
|
|
|
|
|
|
|
|
|
|
经过检查发现,并不是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的错,后面没有继续使用。 |
|
|
|
应该用cJSON_free来释放你打印JSON的那个字符串所占用的内存,会好点
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
AI模型部署边缘设备的奇妙之旅:边缘端设备的局域网视频流传输方案
1650 浏览 0 评论
1515 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
6754 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1881 浏览 0 评论
4099 浏览 0 评论
78802 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-3 12:38 , Processed in 0.383519 second(s), Total 42, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号