struct内存对齐
来源:互联网 发布:免费源码发布站程序 编辑:程序博客网 时间:2024/06/09 22:03
struct内存对齐的规则是:
1、对于结构的各个成员,第一个成员位于偏移为0的位置,以后每个数据的偏移量必须是:
Min(编译器被指定的对齐字节数,该数据成员的自身长度)的倍数
GCC中,Min(系统默认4, 数据成员自身长度)的倍数。
2、在数据成员完各自对齐之后,结构体(或联合体)本身也要进行对齐:
Min(编译器被指定的对齐字节数,struct成员中最长数据类型长度)
GCC中,Min(系统默认4, struct成员中最大的数据类型长度)。
1、对于结构的各个成员,第一个成员位于偏移为0的位置,以后每个数据的偏移量必须是:
Min(编译器被指定的对齐字节数,该数据成员的自身长度)的倍数
GCC中,Min(系统默认4, 数据成员自身长度)的倍数。
2、在数据成员完各自对齐之后,结构体(或联合体)本身也要进行对齐:
Min(编译器被指定的对齐字节数,struct成员中最长数据类型长度)
GCC中,Min(系统默认4, struct成员中最大的数据类型长度)。
#include "stdio.h"#include "stdlib.h"struct abcd{//6 char a;//1 char b;//1 short c;//2 char d;//1};struct node1{//8 char a1;//1 short b1;//2 int c1;//4};struct node2{//12; char a2;//1 int c2;//4 short b2;//2};struct id_all_char{//10 char id3[3];//3 char ver;//1 char revision;//1 char flag;//1 char size[4];//4};struct idid{//12 char id3[3];//3 char ver;//1 char revision;//1 char flag;//1 int size;//4};struct all_short{//6 short a;//2 short b;//2 short c;//2};int main(){ printf("sizeof(abcd)=%d\n",sizeof(struct abcd));printf("sizeof(struct node1)=%d\n",sizeof(struct node1));printf("sizeof(struct node2)=%d\n",sizeof(struct node2));printf("sizeof(struct id_all_char)=%d\n",sizeof(struct id_all_char));printf("sizeof(struct idid)=%d\n",sizeof(struct idid)); printf("sizeof(struct all_short)=%d\n",sizeof(struct all_short)); return 0;}
- struct union 内存对齐
- (Struct)内存对齐
- struct 内存对齐
- struct内存对齐 详解
- union struct 内存对齐
- struct内存对齐
- (Struct)内存对齐
- struct内存对齐
- struct 内存对齐规则
- struct内存对齐
- struct/union内存对齐
- struct内存对齐
- struct内存对齐
- C++ struct内存对齐
- struct内存对齐
- 内存对齐(Struct)
- sizeof union struct 内存对齐
- sizeof union struct 内存对齐
- AndroidGame--水果连连看的设计(原理篇)
- Dijkstra算法
- 关于pgpool
- javascript闭包
- 设计模式学习笔记-观察者模式
- struct内存对齐
- 亡命逃窜(nyoj523广搜)
- [LeetCode] Scramble String (非常规DP求解)
- 2013-C++第10周项目参考解答链接集
- HDU1540:Tunnel Warfare(线段树区间合并)
- HDU 1698 线段树区间修改
- 使用selector去除默认GridView/ListView包含条目的默认点击效果
- 输出成员函数地址小结
- 学生成绩等级