Skip to content

PEEK


获取内存中某地址处任意类型的值

语法

vb
declare function Peek ( byval address as any ptr ) byref as ubyte
declare function Peek ( datatype, byval address as any ptr ) byref as datatype

用法

Peek( [ datatype, ] address )

参数

address

要从中获取值的内存地址。

datatype

要获取的值的类型。如果省略,则假定为 ubyte

说明

此过程返回由内存地址给定的内存中值的引用,等同于:

*cast(ubyte ptr, address)

*cast(datatype ptr, address)

因此,此关键字也可以用来向内存位置赋值,类似于 Poke

注意:使用 Peek 时,-exx 编译器选项不会添加空指针检查代码(不对 address 的值进行空值测试)。

示例

start GeSHi

vb
Dim i As Integer, p As Integer Ptr
p = @i

Poke Integer, p, 420
Print Peek(Integer, p)

end GeSHi

将产生如下输出:

420

与QB的区别

  • QB 中的 Peek 不支持 datatype 参数,只能返回单个字节。
  • FB 中的 Peek 返回引用,因此可以用来设置地址的内存内容,类似于 Operator * (Value of)
  • 不再需要 DEF SEG,因为 FreeBASIC 中的地址空间是 32 位平坦的。

参见

  • Poke
  • Operator * (Value of)

返回 目录

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