FB_MEMCOPYCLEAR
- 来源: https://www.freebasic.net/wiki/wikka.php?wakka=KeyPgFBMemcopyclear
- 最后更新: 2022-06-24
将一块内存的前部分从一个位置复制到另一个位置,并清零剩余部分
语法
declare sub fb_memcopyclear ( byref dst as any, byval dstlen as uinteger, byref src as any, byval srclen as uinteger )用法
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 将尝试从/向指针变量本身所在的内存位置复制字节。
示例
vb
Dim src As ZString * 10 = "FreeBASIC"
Dim dst As ZString * 10 = "012345678"
Print "before:"
Print "src = " & src
Print "dst = " & dst
Print
'' copy first 4 bytes and clear the rest
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版本
- 自 fbc 1.08.0 起
与 QB 的差异
- FreeBASIC 中的行为和用法为新增内容。
另请参阅
fb_memcopyfb_memmove
返回 目录