1

この質問への参照が見つかりませんでした。より大きな配列にサイズ変更する必要がある構造体の配列があります。両方の構造体が完全に初期化されている (各セルが NULL 以外の値を持っている)

いう

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

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

s1 を使用して s2 にコピーするmemcpy()と、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 に答える