memcpy()从较小的数组到较大的数组

时间:2012-08-02 22:53:14

标签: c arrays memcpy

我找不到任何关于这个问题的提法。 我有一个结构数组,我需要调整大小的数组。 两个结构都已完全初始化(每个单元格的值都不是NULL)

typedef struct Square {
...
...
}Square;

Square s1[1024];
Square s2[2048];

如果我使用memcpy() s1复制到s2中,s2会怎么样?我知道它复制字节数据。 将前1024个单元格与s1相同,剩余的1024个单元格是否与初始化单元格相同?或者它也会影响他们吗?

由于

P.S这里的阵列是静态分配的,但我写的只是为了方便。我使用malloc()

分配了它们

1 个答案:

答案 0 :(得分:7)

如果你这样做了:

memcpy(s2, s1, sizeof(s1));

Square中的前s2s1将从sizeof复制,其余的将不受影响(因此,如果它们未初始化,它们仍然会未初始化)。< / p>

请记住,如果按照您的说法分配堆,则无法使用{{1}}。如果你要做的就是增长数组,你可能会发现realloc很有用。