含义#

LuaJIT 中用于指针、结构体和 C 数字的值。ffi.string 将 C 字符串复制为 Lua 字符串;ffi.cast 改变类型视图,但不能证明地址有效。内存生命周期必须单独确认。

示例#

LUA
local ffi = require("ffi")
local value = ffi.new("uint64_t", 42)
local kind = type(value) -- cdata
local bytes = ffi.sizeof(value)

运行效果: 值为 uint64_t含有 42;类型 = "cdata";字节 = 8.

这段段没有打印或写日志信息. 显示的值是示例的预期结果.

方法与相关调用#

函数 返回 用途
ffi.cast cdata 通过C类型的成创建了 skalar cdata. 造不验证记忆地址.
ffi.cdef none 声明FFI的C类型和签名;它不加载图书馆或实现函数.
ffi.copy none 复制字节到分配缓冲中. 输出长度需要一个Lua字符串,同时还复制其零终端符.
ffi.new cdata 分配和初始化cdata. 对于变长数组或结构,需要一个尺寸参数.
ffi.sizeof number | nil 返回C类型或cdata的字节大小;一个未知的大小可以产生零.
ffi.string string 复制从C指针中的数据到Lua字符串中;它没有长度,它读到零终端器.