我找不到任何关于这个问题的提法。 我有一个结构数组,我需要调整大小的数组。 两个结构都已完全初始化(每个单元格的值都不是NULL)
说
typedef struct Square {
...
...
}Square;
Square s1[1024];
Square s2[2048];
如果我使用memcpy()
s1复制到s2中,s2会怎么样?我知道它复制字节数据。
将前1024个单元格与s1相同,剩余的1024个单元格是否与初始化单元格相同?或者它也会影响他们吗?
由于
P.S这里的阵列是静态分配的,但我写的只是为了方便。我使用malloc()
答案 0 :(得分:7)
如果你这样做了:
memcpy(s2, s1, sizeof(s1));
Square
中的前s2
个s1
将从sizeof
复制,其余的将不受影响(因此,如果它们未初始化,它们仍然会未初始化)。< / p>
请记住,如果按照您的说法分配堆,则无法使用{{1}}。如果你要做的就是增长数组,你可能会发现realloc很有用。