具体原因,在其他楼层已经讨论很清晰了。
mqtt_publish中,会判断msg payload length,代码如下:
你的第一段代码,即使做了(void *)的强制转换,也不会有问题。在mqtt_publish中又转回了(char *);
你的第二段代码,将int类型的load的值,作为payload传入mqtt_publish, 该函数内部将payload当作指针处理的,具体你可以看函数MQTTSerialize_publish的处理。所以,你是从load值指向的一段内存中输出了数据,直到遇到0x00。
所以,你的代码中,为了安全起见,还是设置一下msg.payloadlen,再去调用mqtt_publish为好。此外,你对load的使用是不对的。
markdown的代码标签标记符是键盘字母Q上面数字1左边那个键。
如果您的输入法不好控制全半角字符的话,您可以使用复制来输入那3个markdown的代码标签标记符。
另外,网页的编辑器上面有插入代码的按钮啊🐵
但是我也不清楚和你的有没有关系,您可以参考下
检测过了,内存剩余还有500K