繁体   English   中英

数组和单独的初始化之间的区别?

[英]Difference between an array and separate initialization?

所以说我有一个像这样的“结构”:

struct Vertex
{
    float posX, posY, posZ;
}

我在这里声明了3个float(大约4字节)值。 因此,所有这些“结构”总共约为12个字节。

但是,如果我这样写:

struct Vertex
{
    float pos[3];
}

我还能获得与上述相同的效果吗? 12个字节? 有什么区别?

理论上,在第一种情况下,允许编译器在各个字段之间添加填充,而在第二种情况下,不允许编译器(数组必须是元素的连续序列)。

因此, 从理论上讲 ,第一个struct可能会占用更多空间,实际上,它们可能具有相同的大小/内存布局。

显然,在第一种情况下,您可以使用三个成员的名称访问此类数据,而在第二种情况下,将对pos成员使用数组语法。

我可以想到一个差异:如果打包的大小大于变量的大小,则编译器将填充posX,posY,posZ以使它们很好地对齐。 当您执行二进制读/写时,这对您而言至多重要。

通常,使用某些填充会产生严重的性能原因,因为使用未对齐的数据馈送处理器可能会造成严重后果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM