FreeBASIC マニュアルのトップに戻る

FreeBASIC FB_MEMCOPY

目次→実行時ライブラリー参考→メモリ関数FB_MEMCOPY←オリジナル・サイト

FB_MEMCOPY 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい

←リンク元に戻る プログラム開発関連に戻る

メモリ・ブロックを、ある場所から別の場所に、コピーします。

構文:
declare function fb_memcopy cdecl ( byref dst as any, byref src as any, byval bytes as uinteger ) as any ptr

用法:
[result =] fb_memcopy( dst, src, bytes )

パラメータ:
dst
宛先メモリの、開始アドレス
src
ソースメモリの開始アドレス
bytes
コピーするバイト数

戻り値:
宛先メモリの、開始アドレスが、返されます。

内容:
fb_memcopy は、指定されたバイト数を、メモリ・ロケーション src から、メモリロケーション dst に、コピーします。
各開始アドレスは、変数または配列要素への参照から、取得されます。
メモリ領域は、重複してはなりません(重複すると、プラット・フォームによっては、コピーが適切に行われる保証はありません)。
メモリ領域が重複する場合は、fb_memmove を使うことが望まれます(より安全なアプローチです)。
オーバーフローを回避するには、srcdst の両方が指す有効なメモリ領域のサイズが、コピーするバイト数以上である必要があります。

ソース・ポインタとデスティネーション・ポインタの両方が指す、オブジェクトの基本型は、この関数には関係ありません。
この関数は、ソース領域で、終端のヌル文字をチェックしません。
常に指定されたバイト数を、正確にコピーします。
結果は、データのバイナリ・コピーです。

注: 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

出力:
Pierre de Fermat             46

バージョン:
QBからの違い:
参照:
メモリ関数に戻る
←リンク元に戻る プログラム開発関連に戻る

ページ歴史:2022-06-24 01:09:56
日本語翻訳:WATANABE Makoto、原文著作者:fxm

ホームページのトップに戻る

表示-非営利-継承