返回介绍

入门

基础

进阶

26. 结构体变量占用存储空间大小

发布于 2024-10-07 02:37:14 字数 2691 浏览 0 评论 0 收藏 0

结构体变量占用存储空间大小

    struct Person{
        int age; // 4
        char ch; // 1
        double score; // 8
    };
    struct Person p;
    printf("sizeof = %i\n", sizeof(p)); // 16
  • 占用内存最大属性是score, 占8个字节, 所以第一次会分配8个字节
  • 将第一次分配的8个字节分配给age4个,分配给ch1个, 还剩下3个字节
  • 当需要分配给score时, 发现只剩下3个字节, 所以会再次开辟8个字节存储空间
  • 一共开辟了两次8个字节空间, 所以最终p占用16个字节
    struct Person{
        int age; // 4
        double score; // 8
        char ch; // 1
    };
    struct Person p;
    printf("sizeof = %i\n", sizeof(p)); // 24
  • 占用内存最大属性是score, 占8个字节, 所以第一次会分配8个字节
  • 将第一次分配的8个字节分配给age4个,还剩下4个字节
  • 当需要分配给score时, 发现只剩下4个字节, 所以会再次开辟8个字节存储空间
  • 将新分配的8个字节分配给score, 还剩下0个字节
  • 当需要分配给ch时, 发现上一次分配的已经没有了, 所以会再次开辟8个字节存储空间
  • 一共开辟了3次8个字节空间, 所以最终p占用24个字节

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文