Sizeof 报告类型定义结构的不正确大小 - C++
我的应用程序有一个已定义的结构:
typedef struct zsSysVersionMsg_tag
{
WORD cmd;
BYTE len;
} zsSysVersionMsg_t;
我希望 sizeof(zsSysVersionMsg_t)
的计算结果为 3。但是,当我运行我的应用程序时,它的计算结果为 4。有人能解释一下这是为什么吗? (我真的需要它来评估 3。) 谢谢。
My application has a defined structure:
typedef struct zsSysVersionMsg_tag
{
WORD cmd;
BYTE len;
} zsSysVersionMsg_t;
I would expect sizeof(zsSysVersionMsg_t)
to evaluate to 3. However, when I run my application it evaluates to 4. Can someone explain why this is? (I really need it to evaluate to 3.) Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
大多数平台都会“对齐”和“填充”结构,以便它们精确地在字边界上开始和结束。这样做是为了提高内存性能。
假设您使用的是 Windows,您可以设置自己的对齐方式。在您的情况下,您想要对齐单个字节,因此请执行以下操作:
Most platforms will "align" and "pad" structures so that they begin and end exactly on a word boundary. This is done to improve memory performance.
Assuming you are on Windows, you can set your own alignment. In your case, you want to align on single bytes, so do this: