初级会员
  • 第 17809 位会员
  • 0990
  • 2018-04-14 21:16:23
  • Offline
  • 19 90

最近发布的主题

    暂无

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • struct内存分配: https://go.wuhaolin.cn/gopl/ch13/ch13-01.html
  • 楼主 “struct 对齐方式是 4 byte 为一个单位的”这个理解是错误的,不同类型对齐方式不同,MyStruct中,x(int8)对齐align是1,s(string)对齐align是8,go在分配x后(假设地址为0xc000004481),准备放s时,因为s对齐align是8,就不得不向0xc000004488这个地址分配了,可以用以下代码看偏移和变量地址: *** fmt.Printf("x align:%v offset:%v\n",unsafe.Alignof(tmp.x),unsafe.Offsetof(tmp.x)) *** fmt.Printf("s align:%v offset:%v\n",unsafe.Alignof(tmp.s),unsafe.Offsetof(tmp.s)) *** fmt.Printf("%p\n",&tmp.x) *** fmt.Printf("%p\n",&tmp.s) *** 输出: x align:1 offset:0 s align:8 offset:8 0xc000004480 0xc000004488