Lua 源代码中的字节对齐

Lua 源码中定义了一个叫 L_Umaxalign 的数据类型: Ctypedef union { double u; void *s; lua_Integer i; long l; } L_Umaxalign; 这个结构其实是该平台上最长的数据类型。然后和 TString 和 Udata 结构定义成一个联合体: Ctypedef union UTString { L_Umaxalign dummy; /* ensures maximum alignment for strings */ TString tsv; } UTString; typedef union UUdata { L_Umaxalign dummy; /* ensures maximum alignment for 'local' udata */ Udata uv; } UUdata; 之所以这样处理是因为 TString 和 Udata 其实是一块连续内存区域的头部,后面紧跟实体数据。为了……