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。

     

  • 相关阅读:
    ActiveMQ学习第八篇:Consumer
    ActiveMQ学习第七篇:Messaage
    线性判别分析LDA
    逻辑回归
    那些年,曾踩过的Spark坑
    HBase表创建、删除、清空
    python的多线程
    python的多进程
    python实现读写txt文件
    python的封包和解包
  • 原文地址:https://www.cnblogs.com/johnpher/p/2570625.html
Copyright © 2011-2022 走看看