记录处理字符串时产生栈溢出的问题

  最近在做一个通过mqtt接入云平台的项目时,被一个问题折磨了好久,为此写下这篇文章记录一下。

  我的任务是要将dht11获得到的温湿度数据写进一个JSON格式的字符串里面,自此开始我的写bug之路。

因为要将添加了数据的的字符串写进一个特定的结构体(结构体里有一个char *的成员)里面,通过一个调用一个api将将结构体里的信息发布到云平台。一开始我的想法竟然是字符串不能直接用=赋值,我就直接调用了memset给结构体里的成员赋值,不出意外,栈溢出了。

原因:char *str=“hello world”

这样初始化的字符串的内容不能修改,原因是其指向的是常量字符串,常量不可以修改

正确做法:直接将新的字符串的地址传给str,即字符串名

上面我所说的利用memset修改的字符串其初始化应是这样的:

char str[]=“hello world”,同时在使用memset时应该注意数组长度,不然也容易造成栈溢出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值