zoukankan      html  css  js  c++  java
  • 内存对齐

     

    内存对齐

           变量的存储不是简单的堆砌,而是要按照一定的规则对齐。

    Example:

     


     

    内存对齐的优势在于:

                为了提高程序的性能,数据结构(尤其是栈)应该尽可能地在自然边界上对齐。为了访问未对齐的内存,处理器需要作两次内存访问;然而,对齐的内存访问仅需要一次访问。

     

    内存对齐的规则是:

     

    1)结构体变量的首地址能够被其最宽基本类型成员的大小所整除;
    2)结构体每个成员相对于结构体首地址的偏移量(offset)都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字节(internal adding);
    3)结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在最末一个成员之后加上填充字节(trailing padding)。
     
     

    基于上面代码的例子:

    st_1的char占了1个Byte, int在剩下的三个Byte中放不下,就得放在下一个四字节中,short继续往后放,剩了2个Byte的内存空间,因此占用12 Byte。

    st_2的short占2个Byte,char占一个Byte而short剩下了2个Byte,可以装下,int就放在下一个4字节中,因此占用了8 Byte。

     

  • 相关阅读:
    k3 cloud点击按钮单开单据
    k3 cloud _LK表字段代表的意思
    sql server根据触发器名称查看代码
    sql server中查询所有触发器已经对应的表名称
    面向架构编程
    领域设计:领域事件
    QApplication: No such file or directory 完美解决方案
    C++ GUI Qt4编程(第二版) 源代码 下载
    ArcMap进行天空开阔度(SVF)分析
    wpf 高性能自定义chart
  • 原文地址:https://www.cnblogs.com/johnpher/p/2570625.html
Copyright © 2011-2022 走看看