メモリブロックの最初の部分を、ある場所から別の場所にコピーし、残りをクリアします。
構文:
用法:
fb_memcopy( dst,
dstlen, src, srclen
)
パラメータ:
dst
宛先メモリの開始アドレス
dstlen
書き込むバイト数
src
ソースメモリの開始アドレス
srclen
コピーする最初のバイト数(それ以降はクリアされます)
内容:
fb_memcopycopy は、指定されたバイト数(
dstlen)をメモリ位置
src からメモリ位置
dst にコピーします。ただし、最初の
srclen バイトのみがコピーされ、残りはクリアされます(
(dstlen -
srclen) バイト)。
各開始アドレスは、変数または配列要素への参照から取得されます。
メモリ領域は重複してはなりません(そうでないと、特にプラットフォームによっては、正しくコピーされることが保証されません)。
オーバーフローを回避するには、
src と
dst の両方が指す有効なメモリ領域のサイズが、コピーするバイト数(消去されるバイトを含む)と少なくとも同じである必要があります。
ソースポインタと宛先ポインタの両方が指すオブジェクトの基になる型は、この関数には関係ありません。
この関数は、ソース領域で終了ヌル文字をチェックしません。 常に指定されたバイト数を正確にコピーします。
結果は、最初の
srclen バイトのデータのバイナリコピーであり、残りのデータはゼロになります(
(dstlen -
srclen) バイト)。
注意:
Pointer によって参照されるメモリとの間でコピーするには、最初に逆参照する必要があります(または、引数の用語でポインタ名の前に
Byval キーワードを指定します)。そうでないと、
fb_memcopyclear は、
pointer variable のメモリ位置との間でバイトをコピーしようとします。
例:
Dim src As ZString * 10 = "FreeBASIC"
Dim
dst As ZString * 10
= "012345678"
Print
"before:"
Print "src = " & src
Print "dst = " & dst
Print
'' 最初の 4バイトをコピーし、残りをクリアします
fb_memcopyclear(dst, SizeOf(dst), src, 4)
Print "after:"
Print "src = " & src
Print "dst = " & dst
Sleep
出力:
before:
src = FreeBASIC
dst = 012345678
after:
src = FreeBASIC
dst = Free
バージョン:
QBからの違い:
- 動作と使用法は FreeBASIC の新機能です。
参照: