面试中常被问到对齐方式

Posted AllenSquirrel

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试中常被问到对齐方式相关的知识,希望对你有一定的参考价值。

对齐方式

  1. 第一个成员变量在结构体偏移量为0的地址处
  2. 其他成员变量要对齐到对齐数的整数倍的地址处,对齐数=min(默认对齐数,成员大小)  vs默认对齐数为8(x64)或4(x32)  linux下gcc/g++默认对齐数为4
  3. 结构体总大小为最大对齐数的整数倍
  4. 如果嵌套结构体,嵌套结构体对齐到自己最大对齐数的整数倍处,结构体大小就是所有最大对齐数(包含嵌套结构体对齐数)的整数倍

附:常见数据类型

类型范围
char1 个字节-128 到 127 或者 0 到 255
unsigned char1 个字节0 到 255
signed char1 个字节-128 到 127
int4 个字节-2147483648 到 2147483647
unsigned int4 个字节0 到 4294967295
signed int4 个字节-2147483648 到 2147483647
short int2 个字节-32768 到 32767
unsigned short int2 个字节0 到 65,535
signed short int2 个字节-32768 到 32767
long int8 个字节-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
signed long int8 个字节-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
unsigned long int8 个字节0 到 18,446,744,073,709,551,615
float4 个字节精度型占4个字节(32位)内存空间,+/- 3.4e +/- 38 (~7 个数字)
double8 个字节双精度型占8 个字节(64位)内存空间,+/- 1.7e +/- 308 (~15 个数字)
long double16 个字节长双精度型 16 个字节(128位)内存空间,可提供18-19位有效数字。
wchar_t2 或 4 个字节1 个宽字符

以上是关于面试中常被问到对齐方式的主要内容,如果未能解决你的问题,请参考以下文章

面试中常被问到的(20)select,poll,epoll对比

C++ 结构体内存对齐

Java面试中常被问到的几大技术难题

总结!Java面试中常被问到的几大技术难题

干货 | Java面试中常被问到的几大技术难题

求职季 | Java面试中常被问到的几大技术难题