最近まで、構造体フィールドのコピーがmemcpy()
. クラスとオンラインの指示では、ある構造体の内容を別の構造体にコピーすることは、一般的に次のようになります。
struct block *b0 = malloc(sizeof(struct block));
struct block *b1 = malloc(sizeof(struct block));
/* populate fields in *b0 */
memcpy(b1, b0, sizeof *b1); /* copy contents of b0 into b1 */
/* free b0, b1 */
ただし、このタスクは、 を置き換える単純な割り当てによっても実行できますmemcpy()
。
*b1 = *b0; /* dereferenced struct assignment */
これが広く使用されていない正当な理由はありますか (少なくとも私の限られた経験では)? これら 2 つの方法 (代入と -は同等ですか?) または一般的memcpy()
に使用する説得力のある理由はありますか?memcpy()