CGPoint 在内存中的分配是如何的?

CGPoint 在OC中是一个结构体,结构体一般采用内存对齐的方式分配,比如:结构体内有 charfloatintlongdouble几种数据类型。

  • char 1个字节
  • float 2个字节
  • int 4个字节
  • long 4个字节
  • double 8个字节

在分配内存的时候按照变量顺序,变量存放的起始地址相对于结构体的起始地址的偏移量必须为该变量的类型所占用的字节的倍数,不够时填充。
即结构体的size必然是最大变量类型字节倍数。
方式有两种:

  • 自然对界:默认的对其方式,按结构体的成员中size最大的成员对齐。
  • 指定对界:使使用伪指令#pragma pack(n)指定如果结构体内的成员size不足对齐按照n的长度对齐,但是注意如果定义的n大于结构体成员最大的size时则不起作用,结构体还是按照size最大成员对齐。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容