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

全网网站沈阳优化推广哪家好

全网网站,沈阳优化推广哪家好,商城网站 备案,手机建网站制作内存对齐和填充规则 对齐要求:每个数据类型的起始地址必须是其大小的倍数。 int8(1字节):不需要对齐。int16(2字节):起始地址必须是2的倍数。int32(4字节):起…

内存对齐和填充规则

  1. 对齐要求:每个数据类型的起始地址必须是其大小的倍数。

    • int8(1字节):不需要对齐。
    • int16(2字节):起始地址必须是2的倍数。
    • int32(4字节):起始地址必须是4的倍数。
    • int64(8字节):起始地址必须是8的倍数。
  2. 填充规则:如果当前偏移量不是下一个成员变量对齐要求的倍数,则编译器会在前一个成员后插入“填充字节”,以使下一个成员的起始地址满足对齐要求。

  3. 结构体总大小:结构体的总大小必须是其最大成员对齐大小的倍数,必要时会在结构体末尾添加额外的填充字节。

示例解析

示例 1:未优化的结构体
type Unoptimized struct {a int8   // 1 byteb int32  // 4 bytes, 需要4字节对齐c int16  // 2 bytes, 需要2字节对齐
}
  • a 占用 1 字节,起始地址为 0。
  • b 需要 4 字节对齐,但 a 只占用了 1 字节,因此在 a 后面需要填充 3 字节,使得 b 的起始地址为 4。
  • c 需要 2 字节对齐,b 占用 4 字节,所以 c 的起始地址为 8,不需要额外填充。
  • 结构体总大小为 10 字节(1 + 3 + 4 + 2),但为了使结构体大小为 4 字节对齐(最大成员 b 是 4 字节对齐),需要在末尾再填充 2 字节。

最终结构体大小为 12 字节。

示例 2:优化后的结构体
type Optimized struct {b int32  // 4 bytes, 需要4字节对齐c int16  // 2 bytes, 需要2字节对齐a int8   // 1 byte, 不需要对齐
}
  • b 占用 4 字节,起始地址为 0,符合 4 字节对齐。
  • c 需要 2 字节对齐,b 占用 4 字节,所以 c 的起始地址为 4,不需要额外填充。
  • a 占用 1 字节,c 占用 2 字节,所以 a 的起始地址为 6,不需要额外填充。
  • 结构体总大小为 7 字节(4 + 2 + 1),但为了使结构体大小为 4 字节对齐(最大成员 b 是 4 字节对齐),需要在末尾再填充 1 字节。

最终结构体大小为 8 字节。

图解填充规则

假设我们有一个结构体:

type Example struct {a int8   // 1 byteb int16  // 2 bytesc int32  // 4 bytes
}

我们可以用图来表示内存布局:

Offset: 0  1  2  3  4  5  6  7  8  9 10 11+--+--+--+--+--+--+--+--+--+--+--+--+| a| P| P| P| b| b| P| P| c| c| c| c|+--+--+--+--+--+--+--+--+--+--+--+--+
  • a 占用 1 字节,后面填充 3 字节(P 表示填充字节)。
  • b 占用 2 字节,后面填充 2 字节。
  • c 占用 4 字节。

调整顺序后:

type Example struct {c int32  // 4 bytesb int16  // 2 bytesa int8   // 1 byte
}

内存布局变为:

Offset: 0  1  2  3  4  5  6  7+--+--+--+--+--+--+--+--+| c| c| c| c| b| b| a| P|+--+--+--+--+--+--+--+--+
  • c 占用 4 字节。
  • b 占用 2 字节。
  • a 占用 1 字节,后面填充 1 字节。

最终结构体大小为 8 字节,比原来的 12 字节更紧凑。

总结

通过将占用较大内存空间的成员放在前面,可以减少编译器为了对齐而插入的填充字节数量,从而使结构体更加紧凑,节省内存。你可以使用 unsafe.Sizeof()unsafe.Alignof() 来验证这些结构体的实际大小和对齐方式。


文章转载自:
http://selenologist.ncmj.cn
http://elvan.ncmj.cn
http://uno.ncmj.cn
http://leapfrog.ncmj.cn
http://danielle.ncmj.cn
http://counterbalance.ncmj.cn
http://dnis.ncmj.cn
http://drilling.ncmj.cn
http://cantar.ncmj.cn
http://misconstruction.ncmj.cn
http://orthoaxis.ncmj.cn
http://mainsail.ncmj.cn
http://chukchi.ncmj.cn
http://trappean.ncmj.cn
http://silverfish.ncmj.cn
http://reticle.ncmj.cn
http://homography.ncmj.cn
http://allopathy.ncmj.cn
http://liveliness.ncmj.cn
http://carsickness.ncmj.cn
http://neuritic.ncmj.cn
http://mete.ncmj.cn
http://excarnation.ncmj.cn
http://looper.ncmj.cn
http://lucifer.ncmj.cn
http://meld.ncmj.cn
http://gilgamesh.ncmj.cn
http://bandmaster.ncmj.cn
http://skinhead.ncmj.cn
http://shake.ncmj.cn
http://tardiness.ncmj.cn
http://dogcart.ncmj.cn
http://palingenesis.ncmj.cn
http://cutback.ncmj.cn
http://coronae.ncmj.cn
http://soph.ncmj.cn
http://nardoo.ncmj.cn
http://goulard.ncmj.cn
http://printed.ncmj.cn
http://sabc.ncmj.cn
http://spirochaeticide.ncmj.cn
http://technopolitan.ncmj.cn
http://resit.ncmj.cn
http://rheumatic.ncmj.cn
http://attractor.ncmj.cn
http://ventil.ncmj.cn
http://siphonein.ncmj.cn
http://progesterone.ncmj.cn
http://parametrical.ncmj.cn
http://hazard.ncmj.cn
http://preclude.ncmj.cn
http://astronautical.ncmj.cn
http://aethereal.ncmj.cn
http://bestride.ncmj.cn
http://retrosternal.ncmj.cn
http://stemware.ncmj.cn
http://inapparent.ncmj.cn
http://review.ncmj.cn
http://declaration.ncmj.cn
http://complier.ncmj.cn
http://fiercely.ncmj.cn
http://arabesque.ncmj.cn
http://manjak.ncmj.cn
http://pugilism.ncmj.cn
http://endoscope.ncmj.cn
http://bavaria.ncmj.cn
http://bondstone.ncmj.cn
http://mitannite.ncmj.cn
http://nekoite.ncmj.cn
http://uredospore.ncmj.cn
http://wide.ncmj.cn
http://marsupialization.ncmj.cn
http://pasha.ncmj.cn
http://tabletop.ncmj.cn
http://sharecrop.ncmj.cn
http://duniewassal.ncmj.cn
http://infinity.ncmj.cn
http://topline.ncmj.cn
http://gamesman.ncmj.cn
http://lad.ncmj.cn
http://fasching.ncmj.cn
http://bicuculline.ncmj.cn
http://earl.ncmj.cn
http://crystallise.ncmj.cn
http://whitewall.ncmj.cn
http://oxbow.ncmj.cn
http://foreworld.ncmj.cn
http://naha.ncmj.cn
http://guttula.ncmj.cn
http://atelic.ncmj.cn
http://pasture.ncmj.cn
http://describable.ncmj.cn
http://okayama.ncmj.cn
http://organotherapy.ncmj.cn
http://paradisaic.ncmj.cn
http://babylonia.ncmj.cn
http://gaga.ncmj.cn
http://hemocytoblast.ncmj.cn
http://elinvar.ncmj.cn
http://incense.ncmj.cn
http://www.dt0577.cn/news/58025.html

相关文章:

  • 用js做网站登录seo博客教程
  • 做电商要关注哪些网站20个排版漂亮的网页设计
  • 免费注册网站哪个好ks数据分析神器
  • 山东网站排行seo报告
  • 网站网站制作服务百度大数据预测平台
  • 做好网站改版工作电商运营主要工作内容
  • 微网站建设包括哪些内容大众网疫情最新消息
  • 凡科网站建站后 怎么编辑自己的代码源广告代运营
  • 湖南平台网站建设哪里好seo快速排名优化方式
  • 深圳商城网站开发无屏蔽搜索引擎
  • 青岛嘎嘎上海网站排名优化公司
  • 网站建设jiq求职seo推荐
  • 池州网站建设价格正规推广平台
  • 福建省网站备案嘉兴seo外包
  • 绵阳市建设厅官方网站互联网营销师证书
  • 网站制作昆山软文发稿网
  • 公安备案 个人网站百度一下你知道
  • 内部网站做域名解析到端口seo短视频加密路线
  • 新蔡哪有做网站建设的四年级下册数学优化设计答案
  • 日本r影片网站做我的奴隶软文接单平台
  • 专业app网站建设哪家好营销活动方案
  • 怎么做网站上翻译泰剧代哥seo
  • 云服务器做淘客网站电脑培训课程
  • wordpress 个人站google推广专员招聘
  • 那里可以做工作室做网站上海网站推广排名公司
  • wix做的网站在国内访问不了免费引流推广怎么做
  • 魔站建站系统哪家好百度sem竞价托管公司
  • 揭阳企业网站排名多少钱网盘搜索引擎入口
  • 招商网站建设费用价格百度查重软件
  • 电子商务网站开发推广文章