Tagged Pointer
c++ edaTagged Pointer是一个经典的时间优化技术,通过巧妙利用内存对齐特性,在零额外内存开销下避免堆分配。
基础原理
为了防止未对齐访问,编译器会插入填充0以根据类型的对齐要求对齐值,分配内存对齐到8字节(在64位系统上是16字节),指针地址以000结尾 。可以利用这些未使用的低位来指示这不是真实指针,然后将对象数据直接存储在这个"非指针"的剩余部分中,而不是单独的内存分配。
1Top Bottom
2▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮▮000
3 ^^^
4 可用于存储标记
简单实现:存储小整数
以一个能将小整数直接编码进指针的系统为例:
1#include <stdint.h>
2#include <stdbool.h>
3
4// 标记位定义
5#define TAG_MASK 0x7 // 低3位掩码: …

