小编Kon*_*ger的帖子

C++中的结构大小(sizeof)与数组的实际大小不一致

我使用以下结构的动态数组:

struct TestStructure
{
    unsigned int serial;
    int channel;
    int pedestal;
    int noise;
    int test;
};
Run Code Online (Sandbox Code Playgroud)

所述的sizeof(TestStructure)返回20,所以我假定有在结构上没有填充/比对.这在逻辑上是因为只有4字节类型.

但我发现结构的大小乘以元素数不等于数组的大小.阵列的元素之间还有一个额外的填充!因此,在以下代码中:

TestStructure* test_struct = new TestStructure[element_count];
for (int i = 0; i < element_count; i++)
  FillStructure(test_struct, i, i, i, i, i, i); // assigning 'i' for all elements

Long_t size_value = element_count * sizeof(TestStructure);
unsigned char* p_value = new unsigned char[size_value];
memcpy(p_value, test_struct, size_value);
Run Code Online (Sandbox Code Playgroud)

字符的输出数组包含元素之间的附加填充:

sizeof(TestStructure) = 20. element_count = 10. size_value = 200. char array in the hex format:
0 …
Run Code Online (Sandbox Code Playgroud)

c++ arrays struct sizeof memory-alignment

1
推荐指数
1
解决办法
148
查看次数

标签 统计

arrays ×1

c++ ×1

memory-alignment ×1

sizeof ×1

struct ×1