memmoveについて読んでいるときに、MEMORY OVERLAPSを処理できることを読みましたが、2つの文字列間でメモリのオーバーラップがどのように発生するか、およびこの関数がメモリのブロックを正しくコピーする方法を理解できません。
8438 次
2 に答える
5
「メモリオーバーラップ」はそれ自体では発生しません。memmoveオーバーラップするメモリ領域で機能を提供できるのはあなたです。同じ配列に2つのポインタを入れると、メモリ領域が重複してしまう可能性があります。
もちろん、ユニオンを介してオーバーラップするオブジェクトを簡単に作成することもできます。
質問の2番目の部分が何を意味するのかは明確ではありません(「この関数がメモリのブロックを正しくコピーするにはどうすればよいですか」)。ここで問題はどこにありますか?
于 2010-09-03T16:37:31.493 に答える
3
memmove(p+1, p, 42);
これには、最後からバイトを移動する必要があります。Memcpy()はそれを台無しにします。
于 2010-09-03T16:28:31.607 に答える