微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c++ 为什么带有 uint32_t 的结构和带有 uint8_t[4] 的结构具有不同的大小?

如何解决c++ 为什么带有 uint32_t 的结构和带有 uint8_t[4] 的结构具有不同的大小?

我有两个结构:

struct struct_A
{
  uint8_t v1[4];   // 4 bytes
  uint8_t v2;
};

struct struct_B
{
  uint32_t v1;  // 4 bytes
  uint8_t v2; // 1 byte
};

我使用代码获取它们的尺寸:

std::cout<<"size of struct_A is: "<<(sizeof(struct_A))    <<std::endl;
std::cout<<"size of struct_A::v1 is: "<<(sizeof(struct_A::v1))<<std::endl;
std::cout<<"size of struct_A::v2 is: "<<(sizeof(struct_A::v2))<<std::endl;
std::cout<<"size of struct_B is: "<<(sizeof(struct_B))    <<std::endl;
std::cout<<"size of struct_B::v1 is: "<<(sizeof(struct_B::v1))<<std::endl;
std::cout<<"size of struct_B::v2 is: "<<(sizeof(struct_B::v2))<<std::endl;

我得到输出

size of struct_A is: 5
size of struct_A::v1 is: 4
size of struct_A::v2 is: 1
size of struct_B is: 8
size of struct_B::v1 is: 4
size of struct_B::v2 is: 1

如何理解struct_A的大小和struct_B的大小不同?谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。