2
私はmemmove()
を使用していますが、宛先がソースを上書きしているか、上書きが何であるかわからないことがあります。私はchar
(目的地)の配列を持っていて、目的地へのポインタをベクター内に持っています。Memmoveがオーバーラップしています
char destination[]="abcdefg";
char * source = destination+3;
ソースは"defg"
です。次に、memmove()
を使用して4文字を移動し、ソースを印刷します。ソースを見ると、"gefg"
に変更されました。
printf("%s\n",memmove(destination,source,sizeof(char)*4));
printf("%s",source);
私はmemmove()
が上書きされるのを防ぐべきであると考え、または多分私は理解していないです。
ソース(まだdest + 3)ではなく、デスティネーションを見てください。 (注: 'sizeof(char)'は定義上1) – wildplasser
'memmove'は、領域が重なってもバイトをコピーすることを意味します。 –
はい、残念ですが、重複しないで上書きします。 –