结构如何保存在内存中 C
How structs are saved in memory C
C中的结构体是如何保存在内存中的?
为什么有时候内存中的struct长度比较大
超出预期?
这就是所谓的data structure alignment。
虽然不是完美的复制品,但您可以在 Structure padding and packing
中找到关于 C 的很好的解释
- 结构存储为声明包含的变量的串联。
- 变量按照声明的顺序存储。 struct的开头地址就是它包含的第一个变量的开头地址。
- 结构内存布局中的其余变量之间可能存在间隙(甚至在结构的末尾)。这是对 align the variables to memory addresses 完成的,可以从中获取它们。
- 一些架构只能获取对齐的数据。
- 大多数可以获取未对齐数据的架构在这样做时都会遭受性能损失。
C中的结构体是如何保存在内存中的?
为什么有时候内存中的struct长度比较大 超出预期?
这就是所谓的data structure alignment。
虽然不是完美的复制品,但您可以在 Structure padding and packing
中找到关于 C 的很好的解释- 结构存储为声明包含的变量的串联。
- 变量按照声明的顺序存储。 struct的开头地址就是它包含的第一个变量的开头地址。
- 结构内存布局中的其余变量之间可能存在间隙(甚至在结构的末尾)。这是对 align the variables to memory addresses 完成的,可以从中获取它们。
- 一些架构只能获取对齐的数据。
- 大多数可以获取未对齐数据的架构在这样做时都会遭受性能损失。