C++ 存储空间的问题

图片描述

如图2-2所示开始,我怎么感觉有问题,字的存储空间怎么会跟整形一样呢(就算是宽字符也才两个字节啊),难道说的short???

阅读 1.9k
2 个回答

字,从文中以可以看出来,不是一个固定长度的概念。很多时候它就是寄存器的长度,也是整形的大小,就像文中说的一样。

字,指的是 WORD ,而不是字符。所以这和宽字符没有关系。

x86 (以及 x86-64)里,由于兼容性原因,WORD 的长度是 2 字节。在16位机时代,int 跟 WORD 都是 2 字节。现在 int 及寄存器长度已经是 4 字节了(x86-64里还有64位寄存器),但是 WORD 还保持了 2 字节(16位)的定义。这种情况在其它体系结构里也可能出现。

宽字符类型(wchar_t)跟其他类型一样,是没有规定长度的。在某些编译器下它是 2 字节,在某些编译器里(比如 gcc )它是 4 字节。

字长是cpu的概念,是cpu从内存中读取一个单位数据的位数,32位cpu的字长就是4字节。现在主流的64位cpu的字长就是8字节了。古老的16位cpu字长是2字节。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题