C和指针终于看到指针这一章

“注意,尽管一个字包含了4个字节,它仍然只有一个地址。至于它的地址是它最左边那个字节的位置还是最右边那个字节的位置,不同的机器有不同的规定。另一个需要注意的硬件事项是边界对齐(boundary alignment)。在要求边界对齐的机器上,整型值存储的起始位置只能是某些特定的字节,通常是2或4的倍数。”

——难道最近项目中碰到问题是硬件造成的对齐问题?原来在服务器上用的程序现在在普通PC机装上Linux运行,好多结构体的成员都取不到正确的值。虽然猜测是对齐问题,但原代码中有使用#pragma pack(1) 或 #pragma pack(push,1)。莫非普通电脑上不能1字节对齐而服务器可以?

周一去试试

原文地址:https://www.cnblogs.com/zcdqs/p/2963943.html