我正在研究内存分配器。每个分配的缓冲区从一个8字节开始 边界,并且每个头之前都有一个用于管理分配的标头(该标头紧靠8字节对齐的缓冲区之前)。
标题看起来像:
struct header {
uint32_t hword32;
void *hpointer;
};
假定此结构的所有成员都已打包且指针为64位,则此结构的长度为12个字节,每个字节的对齐方式 成员是正确的(因为结构的 end 是8字节对齐的)。
因此,我想告诉编译器两件事:
我该如何使用gcc?
使用__attribute__((packed))
很诱人。但是,虽然这
做1.的诀窍,我的理解是它不涵盖2。(即
导致编译器插入代码以处理未对齐的访问,这里不需要。)