巧用struct

发布时间 2023-12-21 21:55:49作者: mc宇少

struct和class的区别常常被人忘记,struct结构是值类型,它与class不同的是:struct传递时并不是靠引用(指针)而是靠复制,我们可以通俗地认为,它是通过内存复制来实现传递的(真实的情况是通过字节对齐规则循环多次复制内存)。

好处:

1.作为函数中的局部变量,分配的变量内存是在栈上的,作用域结束就回收了,栈上的内存回收十分快速和简单,不会产生碎片,又不需要垃圾回收。

2.struct数组对提高内存访问速度也有帮助。由于struct是值类型,所以它的内存与值类型都是连续的,而class数组则只是引用(指针)变量空间连续,这是大不相同的。连续内存可以帮助我们提高缓存的命中率。但也不是所有的struct都能提高缓存命中率,如果struct太大,会导致拿的缓存只是一部分,那缓存就没意义了。这种情况可以直接使用原值类型(int[]、bool[]),同步索引来代替struct。