• 字节对齐


    字节对齐,又叫内存对齐,个人理解就是一种C++中的类型在内存中空间分配策略。每一种类型存储的起始地址,都要求是一个对齐模数(alignment modulus)的整数倍。问题来了,为什么要有这种策略?计算中内存中的数据就是一个一个的字节(byte),直接按照一个字节一个字节存储就得了,为什么还要那么麻烦。把问题想简单了。

    各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问 一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节对齐.其他平台可能没有这种情况,但是最常见的是如果不按照适合其平台要求对 数据存放进行对齐,会在存取效率上带来损失。

    计算机CPU一次处理可以处理多个字节,就拿32位系统来说,CPU一次可以处理32bit的数据,也就是4个字节。比如有些平台每次读都是从偶地址开始,假设有一个int型数据,存放在内存地址0x1的位置。CPU要读取这个int数据,并且从地址0x0开始读取数据。一次读取4字节,那么这个int型还有一个字节没有读到,就得再读取一次剩下的那一个字节,并且还要进行位操作,把两次读取的数据合并为一个int型数据。两个字–麻烦,效率太低了。那怎么办呢?为了提高效率,干脆在存储的时候把这个int数据放在内存地址0x4的位置,0x1、0x2、0x3的位置都空着,CPU直接从0x4取数据,只需一次就取到了这个数据,还不用进行位操作。就是拿空间换时间,没办法,谁让现在的存内存越来越大了呢?

    个人小站:http://jun10ng.work/ 拥抱变化,时刻斗争,走出舒适圈。
  • 相关阅读:
    子类构造函数 supper关键字
    匿名内部类
    IK 分词器 源码分析
    java重写equals方法
    java编程思想
    设置centos7默认运行级别
    centos7配置wordpress
    python安装tkinter
    centos 7编译安装apache
    关于python中带下划线的变量和函数 的意义
  • 原文地址:https://www.cnblogs.com/Jun10ng/p/12348266.html
Copyright © 2020-2023  润新知