关于 字节对齐
来源:互联网 发布:商城源码授权便宜 编辑:程序博客网 时间:2024/06/09 21:48
字节对齐:减少CPU访存次数(以空间换时间),有的cpu必须要求字节对齐,否则出现异常
gcc 不支持#pargma pack (8) 按默认的4字节对齐 , vc支持
如: struct s
{
char a; double b;
} gcc下可能为12字节,而VC下为16字节(8字节对齐)
对齐的原因是为了减少cpu访问变量的次数,这时补充为8字节没有意义,对32位寄存器的cpu来说,至少需要访问2次,但是如果你的cpu寄存器是64位的,那又不一样了
总之一句话,字节对齐是为了减少cpu的访问次数
struct t
{
int a;
char b;
};
struct s
{
char e;
struct t;
char d;
};// sizeof(struct s) = 16 ( struct 首先作为一个整体)
如果最大长度为4字节,你以2字节对齐的方式存储,会出现什么问题
01 02 03 04 05 06, 这是地址, 4字节存储在02 03 04 05
很不幸,这样的存储方式如果以2字节存取的方式会导致存取一个变量需要访问3次, 为什么
第一次,取出01 02 地址中的02地址所保存的值, 第二次取出03 04,第三次取出05, 这样效率是极低的
第一次,取出01 02 地址中的02地址所保存的值, 第二次取出03 04,第三次取出05, 这样效率是极低的
如果4字节存放在01 02 03 04, 那么我存取一次就可以把整个4字节的数据全部取到
不过,现实情况中应该以0为起始地址- 关于字节对齐【转载】
- 关于C++ 字节对齐
- 关于字节对齐
- 关于C++ 字节对齐
- 关于字节对齐
- 关于字节对齐
- 关于字节对齐
- 关于字节内存对齐
- 关于字节对齐
- 关于字节对齐
- 关于内存字节对齐
- 关于字节对齐
- 关于字节对齐问题
- 关于C++ 字节对齐
- 关于C++ 字节对齐
- 关于字节对齐
- 关于字节对齐
- 关于字节对齐
- BAPI调用 - SAP 库存管理常用BAPI
- import com.sun.image.codec.jpeg.JPEGCodec不通过 找不到包
- 通过重定向来获取log4j的控制台输出
- 静态库链接学习
- Ubuntu 12.04 网络设置 IP GATEWAY netmask DNS
- 关于 字节对齐
- 【转】用XAMPP在本地安装调试WordPress
- openlayers 2.12 和2.11在IE10中错位的原因分析及解决方法【转】
- ASIHTTPRequest
- 如何修改mysql数据库的密码
- hdu1871 无题
- java基础
- Windows编程中的映射模式和坐标转换
- 初识block