重新学struct,边界对齐,声明……与Union的区别
2014-04-23 14:22
260 查看
在内存中,编译器按照成员列表顺序分别为每个结构体变量成员分配内存,当存储过程中需要满足边界对齐的要求时,编译器会在成员之间留下额外的内存空间。
如果想确认结构体占多少存储空间,则使用关键字sizeof。
如果想得知结构体的某个特定成员在结构体的位置,则使用offsetof宏(定义于stddef.h)
还不完全懂,待续……
【区别】结构体和联合体的区别
联合体是为了节省内存而设置的,若干个不同数据类型共用一组内存单元,什么时候用到union????
结构体所占用的内存单元是 它里面包含数据类型所占内存单元的总和
联合体所占的内存单元是 占用内存单元最大的数据类型所占用的值
如果想确认结构体占多少存储空间,则使用关键字sizeof。
如果想得知结构体的某个特定成员在结构体的位置,则使用offsetof宏(定义于stddef.h)
还不完全懂,待续……
struct SIMPLE { int a; char b; }; //获得SIMPLE类型结构体所占内存大小 int size_simple = sizeof( struct SIMPLE ); //获得成员b相对于SIMPLE储存地址的偏移量 int offset_b = offsetof( struct SIMPLE, b );
【区别】结构体和联合体的区别
联合体是为了节省内存而设置的,若干个不同数据类型共用一组内存单元,什么时候用到union????
结构体所占用的内存单元是 它里面包含数据类型所占内存单元的总和
联合体所占的内存单元是 占用内存单元最大的数据类型所占用的值
相关文章推荐
- 关于 struct 和 union 存储时内存边界对齐的问题(二)
- Struct 和 Union区别 以及 对内存对齐方式的说明
- 大端小端区别、Union和Struct的内存分配、对齐方式
- (转载)C中的union和struct的区别,为什么要发明union?
- 关于struct的边界对齐问题
- C/C++中关于struct和union的内存对齐原则
- struct和union的区别
- 对《C语言:内存字节对齐详解——struct 和 union 》的理解
- 神秘的sizeof(union和struct的区别)
- 联合体(union)和结构体(struct)的区别
- struct和 union用 sizeof 看字节对齐,以及__declspec( align( # ) ) 和 #pragma pack()的使用方式
- 大小端区别、Union和Struct的内存大小
- c/c++中struct定义、声明、对齐方式解析
- Struct 和 Union区别
- C++中数据对齐问题。struct、union、enum,类继承。再谈sizeof()
- 关于Union和Struct对齐
- C++:struct和union 内存字节对齐问题
- 结构体(struct)和联合体/共同体(union)的联系和区别——名企面试重难点
- 结构体struct、枚举enum、联合体union、位字段、自定义类型typedef、字节对齐
- class struct union 的区别