我曾阅读过较旧的 K&R(第2版)和其他涉及以 malloc()
和 free()
的风格实现动态内存分配器的 C 语言文本,通常也会顺便提到与数据类型对齐限制有关的内容。显然,某些计算机硬件架构(CPU、寄存器和存储器访问)会限制如何存储和寻址某些值类型。例如,4 字节(long
)整数必须从地址的倍数开始存储可能是一种要求。
主要平台(Intel & AMD、SPARC、Alpha)为内存分配和内存访问施加了哪些限制,如果有的话,或者我可以安全地忽略在特定地址边界上对齐内存分配吗?