zoukankan      html  css  js  c++  java
  • 编程中为什么需要内存对齐?

      我们知道计算机中内存是以字节为单位划分的,CPU通过地址总线来访问内存,CPU一个时钟周期内能处理多少字节的数据,就命令地址总线读取几个字节的数据。举个例子:32位的CPU,一次能处理32bit的数据,也就是4字节的数据,那么CPU就命令地址总线一次性读取4字节的数据,即每次的步长都为4字节,只对地址是4的整倍数的地址进行寻址,比如:0,4,8,100等进行寻址。对于程序来说,一个变量的地址最好刚在一个寻址步长内,这样一次寻址就可以读取到该变量的值,如果变量跨步长存储,就需要寻址两次甚至多次然后再进行拼接才能获取到变量的值,效率明显就低了,所以编译器会进行内存对齐,以保证寻址效率。

      32位CPU为例,寻址步长为4,程序中如果一个int变量的地址为8,那么一次寻址就可以拿到该变量的值,如果int变量的地址为10,那么需要先寻址地址为8的地址拿到数据的一部分,再寻址12的地址拿到另一部分,然后再进行拼接。

  • 相关阅读:
    python 数据类型
    python核心语法
    python 基础知识
    format 用法
    有关python 函数参数
    模拟,队列与堆栈
    字符编码
    [LeetCode] Set Matrix Zeroes
    [LeetCode] Rotate Image
    [LeetCode] Unique Paths
  • 原文地址:https://www.cnblogs.com/418ks/p/10801954.html
Copyright © 2011-2022 走看看