1

我找不到对这个问题的任何参考。我有一个结构数组,我需要将其调整为更大的数组。两个结构都已完全初始化(每个单元格的值都不是 NULL)

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

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

如果我使用 s1 复制memcpy()到 s2,s2 会是什么样子?我知道它复制字节数据。前 1024 个单元格是否会与 s1 相同,而其余 1024 个单元格会与它们初始化时一样吗?还是它也会影响他们?

谢谢

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

4

1 回答 1

7

如果你这样做了:

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

中的前 1024Squares2将从 复制s1,其余的将保持不变(因此,如果它们未初始化,它们仍将未初始化)。

请记住,如果它们按照您所说的进行堆分配,则不能使用sizeof. 如果您要做的只是增加数组,您可能会发现realloc很有用。

于 2012-08-02T22:54:50.950 回答