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

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

typedef struct Square { ... ... }Square; Square s1[1024]; Square s2[2048]; 

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

谢谢

PS这里的数组是静态分配的,但我写的只是为了方便。 我使用malloc()分配它们

如果你这样做:

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

s2的前1024个Square将从s1复制,其余的将不受影响(因此,如果它们未初始化,它们仍将是未初始化的)。

请记住,如果按照您的说法分配堆,则不能使用sizeof 。 如果你想要做的只是增长数组,你可能会发现realloc非常有用。