完善资料让更多小伙伴认识你,还能领取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); } } |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
I.MX6ULL-飞凌 ElfBoard ELF1板卡- 应用层更改引脚复用的方法
3429 浏览 0 评论
1366 浏览 0 评论
【英飞凌PSoC 6 RTT开发板试用】串口测试标准输入输出重定向
1121 浏览 0 评论
4710 浏览 0 评论
1842 浏览 0 评论
55758 浏览 21 评论
【参与有奖】激扬代码,千元现金!RT-Thread主题征文大赛
57024 浏览 88 评论
278173 浏览 75 评论
50888 浏览 31 评论
15990 浏览 53 评论
野火 ISO STM32资料合集(程序、原理图、项目初高级篇)
18103 浏览 46 评论
13279 浏览 50 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-5-2 10:28 , Processed in 0.477179 second(s), Total 38, Slave 30 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号