zoukankan      html  css  js  c++  java
  • 结构体的内存对齐

    C/C++结构体内存遵循三个原则: 

    1) 结构体变量的首地址能够被其最宽基本类型成员的大小所整除;
    2) 结构体每个成员相对于结构体首地址的偏移量(offset)都是成员自身大小的整数倍,如有需要编译器会在成员之间加上填充字节(internal adding);
    3) 结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在最末一个成员之后加上填充字节(trailing padding)。
     
    c++中的类与结构体几乎相同。除了默认成员的访问控制不同,类成员在内存对齐的原则上,与结构体是一样的。
     
    在缺省情况下,C编译器为每一个变量或是数据单元按其自然对界条件分配空间。一般地,可以通过下面的方法来改变缺省的对界条件:
     
    使用伪指令#pragma pack (n),C编译器将按照n个字节对齐。
    使用伪指令#pragma pack (),取消自定义字节对齐方式。
     
    参考:
    http://www.cnblogs.com/wy-wangyan/archive/2010/10/14/1851671.html
    http://blog.chinaunix.net/uid-25445243-id-2354324.html
  • 相关阅读:
    洛谷P4175 网络管理
    洛谷P2605 基站选址
    洛谷P3723 礼物
    bzoj3771 Triple
    洛谷P3321 序列统计
    bzoj2194 快速傅里叶之二
    1109课堂内容整理
    响应式网页
    表单隐藏域有什么作用?
    1106课堂笔记
  • 原文地址:https://www.cnblogs.com/superpig0501/p/4455068.html
Copyright © 2011-2022 走看看