当前位置: 首页 > news >正文

惠山网站建设免费建站哪个最好

惠山网站建设,免费建站哪个最好,做孝道的网站的目的,支付宝小程序搭建计算结构体大小 目录计算结构体大小一. 结构体内存对齐1. 简介2. 嵌套结构体二. offsetof三. 内存对齐的意义四. 修改默认对齐数一. 结构体内存对齐 以字节(bety)为单位 1. 简介 对于结构体成员在内存里的存储,存在结构体的对齐规则&#…

计算结构体大小

目录

  • 计算结构体大小
    • 一. 结构体内存对齐
      • 1. 简介
      • 2. 嵌套结构体
    • 二. offsetof
    • 三. 内存对齐的意义
    • 四. 修改默认对齐数

一. 结构体内存对齐

以字节(bety)为单位

1. 简介

对于结构体成员在内存里的存储,存在结构体的对齐规则,并不是连续存放的。

例1:对下面程序,你认为结构体s的大小是多少呢?

#include <stdio.h>struct S1
{char a;int b;char c;
};int main()
{struct S1 s;printf("%d\n", sizeof(s));return 0;
}
  • 第一个成员存放的位置是该结构体偏移量为0的地址
    在这里插入图片描述

  • 其他成员变量需要根据偏移量存放在其对齐数的整数倍的位置处

vs 下:对齐数 = 编译器默认对齐数(值为8) 与 该成员变量大小的最小值

(Linux下: 对齐数 = 该成员变量的大小)

在这里插入图片描述


  • 结构体总大小是其每个成员对齐数中最大数值的整数倍
    在这里插入图片描述

2. 嵌套结构体

例2: 对下面代码中,结构体s的大小是?

#include <stdio.h>struct S1
{char a;int b;char c;
};struct S2
{struct S1 s1;char c;
};int main()
{struct S2 s;printf("%d\n", sizeof(s));return 0;
}
  • 包含上述三条规则下,嵌套的结构体对齐到自己最大对齐数的整数倍处,结构体总大小为最大对齐数(包含嵌套结构体成员的对齐数)的整数倍
    在这里插入图片描述

二. offsetof

在这里插入图片描述

  • 该宏可以用于计算结果体成员相对于起始位置的偏移量

示例:
在这里插入图片描述

  • 原码解析

    #define offsetof(s,m) ((size_t)&(((s*)0)->m))
    

将数字0(地址为0x00000000)强转为s*类型的数据,s是结构体,m是其成员,

通过&((s* )0->m)得到成员m处的地址,再转换为size_t类型数据(相当于得到m地址距离结构体起始地址0x00000000的偏移字节数)。


三. 内存对齐的意义

  1. 在不同平台下,不是所有硬件平台都可以取任意地址访问数据,某些平台只能在某些地址处取特点大小的数据。
  2. 此时对于内存对齐后的数据,处理器访问会更加便捷

示例:
在这里插入图片描述

结构体内存对齐为了用空间来换取时间

但是我们可以利用结构体内存对齐规则,更合理的设计成员变量位置,如:让占用空间小的成员放在一起。

四. 修改默认对齐数

在vs(Visual Studio)编译器下存在默认对齐数(8)

如果我们想要修改为其他数值,也是可以的。

使用预处理指令#pragma pack(数字),修改成你想要的结果

示例:
在这里插入图片描述

将默认对齐数调至2后,对于结构体s1:a在偏移量0的空间,b在偏移量2~5的空间,c在偏移量6的空间。从0 ~ 6一共7个字节的空间,不是最大对齐数2的整数倍,所有会再浪费1个字节空间,总大小为8个字节。

通常修改的默认对齐数都是2n2^n2n , n=(0,1,2...)n=(0,1,2...)n=(0,1,2...)

s1:a在偏移量0的空间,b在偏移量2~5的空间,c在偏移量6的空间。从0 ~ 6一共7个字节的空间,不是最大对齐数2的整数倍,所有会再浪费1个字节空间,总大小为8个字节。

通常修改的默认对齐数都是2n2^n2n , n=(0,1,2...)n=(0,1,2...)n=(0,1,2...)

🦀🦀观看~

http://www.15wanjia.com/news/52836.html

相关文章:

  • 一站式做网站报价seo技术
  • 乐清新闻综合频道节目表window优化大师
  • 那有名网站是php做的网站外链代发
  • 上海百度做网站企业官网推广
  • gate网站合约怎么做空营销策划方案怎么写?
  • 工作是套模板做网站在线咨询 1 网站宣传
  • 网站建设技术招聘如何制作网站
  • 广州做网站多少地推推广平台
  • 网站开发适配营销咨询公司经营范围
  • 怎么做网页导航栏win10优化大师好用吗
  • wordpress中目录如何表示seo是哪个英文的简写
  • 安 网站建设网站优化网站
  • 公司做网站多少钱乐器培训机构最新消息
  • 商务丈哥seo博客工具
  • 做算命网站赚钱吗大数据免费查询平台
  • 如何提交网站连接到百度武汉百度关键词推广
  • 响应式设计网站案例百度指数搜索热度大学
  • 怎么是一个网站看起来高大上抖音seo优化公司
  • 惠城网站制作精准推广的渠道有哪些
  • 上海工程建设信息网站郑州网站seo外包公司
  • 去哪里做网站安全等级保护级别品牌推广百度seo
  • 青岛做网站企业排名百度框架户开户渠道代理
  • 猪八戒网做网站如何付款2345网址导航怎么下载
  • 微信连接微网站吗站长工具域名查询ip
  • 网页微信注册新号怎么注册南宁网络优化seo费用
  • 春播网站是谁做的品牌策划方案模板
  • 做图片视频的网站有哪些问题登封搜索引擎优化
  • 有什么网站做交流会个人网页设计作品欣赏
  • 简单网站建设seo流量优化
  • 做网站编辑心得手机搜索引擎排名