メモリブロックを、ある場所から別の場所に、コピーします。
構文:
用法:
[result =] fb_memmove( dst, src, bytes )
パラメータ:
dst
宛先メモリの、開始アドレス
src
ソースメモリの、開始アドレス
bytes
コピーするバイト数
戻り値:
宛先メモリの開始アドレスが、返されます。
内容:
fb_memmove は、指定されたバイト数を、メモリ・ロケーション
src から、メモリ・ロケーション
dst に、コピーします。
各開始アドレスは、変数または配列要素への参照から、取得されます。
中間バッファが使用されているかのようにコピーが行われ、宛先エリアとソースエリアを、任意の方法で重複させることができます(プラットフォームにかかわらず、安全な方法)。
メモリ領域が重複しない場合は、
fb_memcopy を使うだけで十分です(速度が向上する可能性があります)。
オーバーフローを回避するには、
src と
dst の両方が指す、有効なメモリ領域のサイズが、コピーするバイト数以上である必要があります。
ソースとデスティネーションの両方のポインタが指す、オブジェクトの基本型は、この関数には関係ありません。
この関数は、ソース領域で、終端のヌル文字をチェックしません。
常に指定されたバイト数を、正確にコピーします。
結果は、データのバイナリ・コピーです。
注: Pointer が参照するメモリ間でコピーを行うには、まずポインタを逆参照する必要があります(または、引数名で、ポインタ名の前に
Byval キーワードを指定します)。
それ以外の場合、
fb_memmove は、
pointer variable のメモリー位置間でバイトをコピーしようとします。
例:
Dim As ZString * 33 z = "memmove can be very useful......"
Print z
fb_memmove(z[20], z[15], 11)
Print z
Sleep
出力:
memmove can be very useful......
memmove can be very very useful.
バージョン:
QBからの違い:
- 動作と使用法は、FreeBASIC の新機能です。
参照: