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。

     

  • 相关阅读:
    HttpModule,HttpHandler,HttpHandlerFactory
    IHttpModule实现URL重写
    HttpModule与HttpHandler详解
    IHttpModule接口
    VS中新建网站和新建项目web应用程序的区别?(实际应用总结一点)
    slf4j简介
    SQL条件表达式
    Windows命令查看文件MD5
    Final对象
    Seasar2框架:AOP
  • 原文地址:https://www.cnblogs.com/johnpher/p/2570625.html
Copyright © 2011-2022 走看看