内存访问并非以字节为单位
虽然 C++ 认为每个字节都是可以独立访问的,但计算机会通过获取更大块的数据来补偿缓
慢的内存速度。最小型的处理器可以每次从主内存中获取 1 字节,桌面级处理器则可以立
即获取 64 字节。一些超级计算机和图形处理器还可以获取更多。
当 C++ 获取一个多字节类型的数据,比如一个 int、double 或者指针时,构成数据的字
慢的内存速度。最小型的处理器可以每次从主内存中获取 1 字节,桌面级处理器则可以立
即获取 64 字节。一些超级计算机和图形处理器还可以获取更多。
当 C++ 获取一个多字节类型的数据,比如一个 int、double 或者指针时,构成数据的字
节可能跨越了两个物理内存字。这种访问被称为非对齐的内存访问(unaligned memory
access)。此处优化的意义在于,一次非对齐的内存访问的时间相当于这些字节在同一个字
中时的两倍,因为需要读取两个字。C++ 编译器会帮助我们对齐结构体,使每个字段的起
始字节地址都是该字段的大小的倍数。但是这样也会带来相应的问题:结构体的“洞”中
包含了无用的数据。在定义结构体时,对各个数据字段的大小和顺序稍加注意,可以在保
持对齐的前提下使结构体更加紧凑。
中时的两倍,因为需要读取两个字。C++ 编译器会帮助我们对齐结构体,使每个字段的起
始字节地址都是该字段的大小的倍数。但是这样也会带来相应的问题:结构体的“洞”中
包含了无用的数据。在定义结构体时,对各个数据字段的大小和顺序稍加注意,可以在保
持对齐的前提下使结构体更加紧凑。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)