具有静态多维数组的C++结构体的内存布局

问题描述 投票:0回答:1

我有一个 C++

struct
,其中包含整数和 static 数组,如下所示:

struct sMyStruct {
    unsigned int uiVal;
    int iVal1;
    int iVal2 = 0;
    float afVals[ NUM_VALUES ];
    unsigned char auiVals[ NUM_VALUES ];
    float aafVals[ NUM_VALUES ][ NUM_VALUES_2 ];
};

其中

NUM_VALUES
NUM_VALUES_2
在编译时被
#define
d。

我可以安全地假设,允许成员之间进行一些填充以适应对齐边界,此结构中的每个成员(包括数组)将在内存中连续(连续)布局?

我将此结构传递给 LabVIEW 应用程序,只有三个整数和第一个数组 (

afVals
) 安全到达。最后两个数组丢失了,我不知道为什么。

c++ arrays memory struct memory-layout
1个回答
0
投票

非常感谢所有发表建设性意见的人:我想我现在有了答案!看来普遍的共识是:是的,我可以安全地假设结构的所有成员(包括数组)将在内存中连续布置(允许插入任何填充以进行对齐)。

© www.soinside.com 2019 - 2024. All rights reserved.