Skip to content

FB_MEMCOPYCLEAR


将一块内存的前部分从一个位置复制到另一个位置,并清零剩余部分

语法

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_memcopycopydstlen 个字节从内存位置 src 复制到内存位置 dst,但只有前 srclen 个字节被真正复制,其余部分(dstlen - srclen 个字节)被清零。

每个起始地址均取自对变量或数组元素的引用。

内存区域不得重叠(否则,复制操作不保证正确执行,尤其取决于平台)。

为避免溢出,srcdst 所指向的有效内存区域大小必须至少等于要复制的字节数(包括被清零的字节)。

源指针和目标指针所指对象的底层类型与该函数无关。

该函数不检查源区域中的任何终止空字符,始终精确复制指定数量的字节。

结果为前 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_memcopy
  • fb_memmove

返回 目录

基于 FreeBASIC 官方文档翻译 如有侵权请联系我们删除
FreeBASIC 是开源项目,与微软公司无隶属关系