> 技术文档 > 【C++基础】结构体 / 联合体内存布局:面试高频考点与真题解析

【C++基础】结构体 / 联合体内存布局:面试高频考点与真题解析


掌握内存布局是C/C++程序员的必修课,也是大厂面试的核心考点。本文解析内存对齐、字节序、位域等关键概念,轻松应对面试挑战!

一、基础概念

1.1 结构体(Struct)

结构体是一种用户自定义的数据类型,用于将不同类型的数据组合在一起。结构体中的每个成员都有自己独立的内存空间,存储位置连续但相互独立。例如:

struct Person { char name[20]; int age; float height;};

结构体的大小取决于所有成员的总大小加上填充字节(为了内存对齐)。

1.2 联合体(Union)

联合体也是一种用户自定义类型,所有成员共享同一块内存空间。联合体的大小等于最大成员的大小,且必须是最大对齐数的整数倍。例如:

union Data { int i; char c; float f;};

联合体的典型应用包括节省内存空间(如同一内存位置存储不同类型数据)和判断字节序。

1.3 基本数据类型大小(x86-64)

类型 大小(字节) 对齐要求 char 1