首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在将内容设置为null时cgdb中的内存显示是错误的?

为什么在将内容设置为null时cgdb中的内存显示是错误的?
EN

Stack Overflow用户
提问于 2016-04-18 16:40:02
回答 1查看 21关注 0票数 0

代码语言:javascript
复制
    unsigned char mac[6];
    memset(mac,'\0',sizeof(mac));

问题:为什么我在一次显示MAC内存内容时只得到5 \0000?但所有元素都是完全空的。

我试着用其他字符来设置它,比如@或$等等。它只有6个字符,而不是5个字符。

这是一个带有cgdb的bug吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-26 09:07:47

看起来您的调试器将其作为字符串处理一半,将其处理为数组。

您可以很清楚地看到,有六个数组元素,mac[0]通过mac[5]

但是,由于mac行已经决定要输出一个字符串,所以它将最终的\0视为所述字符串的空终止符。在C世界中,第一个这样的\0将被认为是字符串的结尾。

至于它是否是一个bug,这取决于调试器文档的声明。如果它声明它将输出C风格的字符串,那么,是的,它似乎是一个bug。

如果没有这样说,它可以作为一个执行决定,或最坏的,一个弱点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36699664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档