メモリ・ブロックを、ある場所から別の場所に、コピーします。
構文:
用法:
[result =] fb_memcopy( dst, src, bytes )
パラメータ:
dst
宛先メモリの、開始アドレス
src
ソースメモリの開始アドレス
bytes
コピーするバイト数
戻り値:
宛先メモリの、開始アドレスが、返されます。
内容:
fb_memcopy は、指定されたバイト数を、メモリ・ロケーション
src から、メモリロケーション
dst に、コピーします。
各開始アドレスは、変数または配列要素への参照から、取得されます。
メモリ領域は、重複してはなりません(重複すると、プラット・フォームによっては、コピーが適切に行われる保証はありません)。
メモリ領域が重複する場合は、
fb_memmove を使うことが望まれます(より安全なアプローチです)。
オーバーフローを回避するには、
src と
dst の両方が指す有効なメモリ領域のサイズが、コピーするバイト数以上である必要があります。
ソース・ポインタとデスティネーション・ポインタの両方が指す、オブジェクトの基本型は、この関数には関係ありません。
この関数は、ソース領域で、終端のヌル文字をチェックしません。
常に指定されたバイト数を、正確にコピーします。
結果は、データのバイナリ・コピーです。
注: Pointer が参照するメモリー間でコピーを行うには、最初にポインターを逆参照する必要があります(または、引数名で、ポインター名の前に
Byval キーワードを指定します)。
それ以外の場合、
fb_memcopy は、
pointer variable のメモリー位置間で、バイトをコピーしようとします。
例:
Type Person
Dim As ZString * 40 Name
Dim As Integer age
End Type
Dim As ZString Ptr mynameptr = @"Pierre de Fermat"
Dim As Person person1, person2
' using fb_memcopy to copy string
fb_memcopy(person1.Name, *mynameptr, Len(*mynameptr) + 1)
person1.age = 46
' using fb_memcopy to copy structure
fb_memcopy(person2, person1, SizeOf(Person))
Print person2.Name, person2.age
Sleep
出力:
バージョン:
QBからの違い:
- 動作と使用法は、FreeBASIC の新機能です。
参照: