含义#
LuaJIT 中用于指针、结构体和 C 数字的值。ffi.string 将 C 字符串复制为 Lua 字符串;ffi.cast 改变类型视图,但不能证明地址有效。内存生命周期必须单独确认。
示例#
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字符串中;它没有长度,它读到零终端器. |