完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我之前也在这个软件包遇到了几个问题在这里分享一下我是怎么找到问题的吧
是没对齐的问题,这里我打了一个补丁https://github.com/jiejieTop/mqttclient/pull/63,但是作者没合,你可以参考一下 如果订阅的信息不是直接写死的,比如name是malloc出来零时赋值的,传给mqtt后又被free了,这时也会出现一些问题,因为这个软件包只保存了那个临时指针,并没有保存真实的数据,修复方式类似于这样,以topic为例,其他的像name一样的类推: static message_handlers_t *mqtt_msg_handler_create(const char *topic_filter, mqtt_qos_t qos, message_handler_t handler) { message_handlers_t *msg_handler = NULL; msg_handler = (message_handlers_t *)platform_memory_alloc(sizeof(message_handlers_t)); if (NULL == msg_handler) return NULL; mqtt_list_init(&msg_handler->list); msg_handler->qos = qos; msg_handler->handler = handler; /* register callback handler */ msg_handler->topic_filter = rt_malloc(rt_strlen(topic_filter) + 1); rt_strncpy(msg_handler->topic_filter, topic_filter, rt_strlen(topic_filter) + 1); return msg_handler; } 记得在释放的时候也销毁掉 static void mqtt_msg_handler_destory(message_handlers_t *msg_handler) { if (NULL != &msg_handler->list) { mqtt_list_del(&msg_handler->list); platform_memory_free(msg_handler->topic_filter); platform_memory_free(msg_handler); } } |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
782 浏览 0 评论
4050 浏览 0 评论
如何使用python调起UDE STK5.2进行下载自动化下载呢?
2502 浏览 0 评论
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
2919 浏览 0 评论
获奖公布!2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
31346 浏览 11 评论
72887 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 19:30 , Processed in 0.668522 second(s), Total 73, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号