关于struct调用sizeof的一个问题
来源:互联网 发布:膜法传奇知乎 编辑:程序博客网 时间:2024/05/16 12:20
64位与32位linux c开发时默认字节对齐方式分别为8和4。
在默认情况下,32位操作系统字节对齐方式是4个字节,但64位操作系统,字节对齐是8个字节。
看下面的例子
#include <stdio.h>typedef union { int data[5];}DATA;int main(int argc,char **argv){ DATA data; printf("%d \n",sizeof(data)); return 0;}上面的运行结果是 【 20 】(64位机器)
再看下面的例子
#include <stdio.h>typedef union { int data[5]; long id;}DATA;int main(int argc,char **argv){ DATA data; printf("%d \n",sizeof(data)); return 0;}上面的运行结果是 【 24 】,按照一般情况,我们是说union的字节数大小是等于最大的那个,就是20。。。。。
再看一个例子
#include <stdio.h>typedef union { int data[4]; long id;}DATA;int main(int argc,char **argv){ DATA data; printf("%d\n",sizeof(data)); return 0;}
上面的运行结果是 【 16 】
其实上面的结果就是对齐之后的结果,特别是24的,它是从第三个8个字节位置开始对齐。所以它的大小是 int data[4] + long。
因此,在计算结构体的sizeof时,不但要考虑对齐的字节数,还要考虑开始对齐的位置,其实也就是对齐方向(大端小端的问题了)
0 0
- 关于struct调用sizeof的一个问题
- struct 关于sizeof的大小问题
- sizeof(struct)--关于字节对齐的问题
- 关于求sizeof(struct)“不正确”的问题
- 关于sizeof(struct student)的问题
- 一个关于struct的问题
- struct 关于sizeof的大小
- 转:struct 关于sizeof的大小-内存对齐问题
- 关于结构体的内存分配问题--sizeof(/*struct*/A)
- 关于结构体struct的sizeof计算问题
- sizeof struct为什么总是一个问题
- 关于struct类型的sizeof探究
- 关于sizeof 和struct
- union 和struct的sizeof问题
- struct,class的sizeof大小问题
- 关于sizeof的问题
- sizeof struct 问题
- sizeof struct 问题
- Eclipse android 开发工具报错 R.java not generating
- 第17周项目--胖子伤不起
- CentOS 7.0安装遨游浏览器
- application:didFinishLaunchingWithOptions
- BZOJ 2693 jzptab 莫比乌斯反演
- 关于struct调用sizeof的一个问题
- archetype:generate
- 2014年十大网络用语
- 【好程序员特训营】Java的Io操作
- hdu1248 寒冰王座 完全背包 简单
- 基于Innobackupex的全备恢复
- [LeetCode] Longest Palindromic Substring 使用2D-vector 和 2D-array的区别
- LeetCode--Implement strStr()
- OAF-Error001:Oracle.apps.fnd.framework.OAException: Application: FND, Message Name: FND_GENERIC_MESS