您现在的位置是:探索 >>正文
在pc机中 a xff 在内存占用的字节数是
探索39863人已围观
简介```html 在PC机中 a xff 在内存占用的字节数 body { font-family: 'Segoe UI', '微软雅黑', system-ui, sans-serif; li ...
直接给答案:a 和 xff 这俩东西在内存里占的字节数,压根不是内存同一个量级。一个字符 a 通常只占 1 个字节,占用而字符串 xff 占 3 个字节。机中节数别急着关页面,内存这里头有坑,占用不是机中节数所有“看起来像字符”的东西都按你想象的方式存储。
先看 a。内存在 C 语言里,占用char a = 'a'; 这行代码一写,机中节数编译器就在栈上或者数据段里划出 1 个字节。内存ASCII 码里 'a' 是占用 97,十六进制 0x61。机中节数一个字节 8 位,内存存 0 到 255 绰绰有余。占用哪怕你写 char a = 97;,它还是 1 字节。PC 上常见的 x86 架构,内存编址按字节来,1 字节就是最小可寻址单元。所以 a 占 1 字节,没得商量。
那 xff 呢?有人第一反应:这不就是十六进制数 0xff 嘛,一个字节搞定。错。你写的是 xff,前面没有 0,它是一个由字符 'x'、'f'、'f' 组成的字符串字面量。字符串在内存里是连续存放的字符数组,末尾还得补一个 '\0' 作为结束符。所以 "xff" 占 3 个可见字符 + 1 个结束符 = 4 字节?等等,这里要分情况。
如果你写的是 char *s = "xff";,那字符串常量 "xff" 存在只读数据段,占 4 字节(x、f、f、\0)。但如果你写的是 char s[] = "xff";,数组大小也是 4。可如果题目里的 xff 是某个变量名或者宏呢?比如 #define xff 0xff,那它根本不在内存里占空间,预处理阶段就被替换成数字了。所以脱离上下文谈占用字节数,很容易掉进坑里。
'a' 还是字符串 "a"?是字符串 "xff" 还是十六进制常量 0xff?PC 上内存按字节编址,但类型决定宽度。 我拿自己机器上的 GCC 试过。写一段小代码:
printf("%zu %zu\n", sizeof('a'), sizeof("xff"));
输出是 4 4?等等,C 语言里 sizeof('a') 在 C99 标准下是 int 的大小,也就是 4 字节。惊不惊喜?字符常量 'a' 的类型是 int,不是 char。但如果你把它存进 char 变量,char a = 'a';,那变量本身还是 1 字节。所以“占用字节数”得看你是问表达式类型的大小,还是实际存储对象的大小。
再较真一点:PC 上常见的 UTF-8 编码里,ASCII 字符 a 还是 1 字节。但如果你在 Java 里写 char a = 'a';,Java 的 char 是 2 字节,因为用 UTF-16。C# 也一样。所以语言不同,结果不同。题目说“PC 机中”,默认是 x86 架构、主流操作系统,但没指定语言。C/C++ 里 char 是 1 字节,Java 里 char 是 2 字节。这差距够大吧?
回到 xff。如果它出现在 Python 里,s = "xff",Python 3 的字符串是 Unicode,每个字符占多少字节取决于编码。内存里 CPython 用可变长度表示,ASCII 字符每个占 1 字节,但整体对象有额外开销。PyObject 头部就 16 字节起步。所以“占用的字节数”在高级语言里根本不能只看字符个数。C 语言里字符串字面量 "xff" 是 4 字节(含结尾 \0),这是最干净的答案。
我见过有人把 0xff 和 "xff" 搞混。前者是整数常量,类型 int,在 32 位和 64 位 PC 上通常占 4 字节。后者是字符串,占 4 字节(3 字符 + 1 结束符)。巧了,都是 4 字节,但原因完全不同。一个存的是数值 255,一个存的是内存里连续的 0x78 0x66 0x66 0x00。如果你用 sizeof 去量,结果一样,但意义天差地别。
所以下次有人问你 a 和 xff 占多少字节,先反问:什么语言?什么类型?是字符还是字符串?是常量还是变量?PC 机不是重点,编译器和对齐规则才是。我自己的习惯是,写底层代码时永远用 sizeof 确认,别靠猜。猜错了,内存越界或者协议解析错误就找上门了。
Tags:
上一篇:滁州地区招聘smt工程师
下一篇:网络诈骗心得体会500字免费
相关文章
河南哪里有反渗透实验装置报价
探索郑州的环保设备市场里,反渗透实验装置报价能差出三倍。同样标称“实验室级”的RO膜组件,二七区那家老牌水处理公司开价四万二,高新区新注册的科技公司却只报一万五。别急着贪便宜——前者配的是陶氏膜和进口高压 ...
【探索】
阅读更多派出所接处警工作存在问题及漏洞
探索凌晨两点,某派出所接到一起酒后斗殴报警。接警员在电话里问了五分钟“你现在具体在哪个位置”,报警人已经语无伦次,只反复说“你们快来”。等民警到场,人早跑了,地上剩半截碎酒瓶。这事儿怪谁?怪报警人说不清? ...
【探索】
阅读更多微软官方网站
探索打开微软官方网站,第一眼看到的不是满屏的产品推销,而是一个搜索框和几排整齐的导航卡片。这个页面设计得很克制,甚至有点“冷淡风”。但如果你仔细点几下,会发现它其实是整个微软生态的入口——从Windows ...
【探索】
阅读更多