Significado#
Valores de LuaJIT para punteros, estructuras y números de C. ffi.string copia una cadena de C a una cadena de Lua; ffi.cast cambia la vista del tipo sin demostrar que la dirección sea válida. Comprueba por separado la vida útil de la memoria.
Ejemplo#
local ffi = require("ffi")
local value = ffi.new("uint64_t", 42)
local kind = type(value) -- cdata
local bytes = ffi.sizeof(value)Qué ocurre: valor es uint64_t que contiene 42; tipo = "cdata"; bytes = 8.
Este fragmento no imprime ni escribe un mensaje de registro. Los valores mostrados son los resultados esperados del ejemplo.
Métodos y llamadas relacionadas#
| Función | Devuelve | Finalidad |
|---|---|---|
| ffi.cast | cdata |
Crea cdata scalar por un molde tipo C. El casting no valida una dirección de memoria. |
| ffi.cdef | none |
Declara los tipos y firmas C para FFI; no carga una biblioteca ni implementa una función. |
| ffi.copy | none |
Copia bytes en un buffer asignado. Omitir longitud requiere una cadena Lua y también copia su cero-cestor. |
| ffi.new | cdata |
Alocates e inicializa cdata. Se requiere un argumento de tamaño para arrays o structs de longitud variable. |
| ffi.sizeof | number | nil |
Devuelve el tamaño del byte de un tipo C o cdata; un tamaño desconocido puede producir nil. |
| ffi.string | string |
Copia datos de un puntero C en una cadena Lua; sin una longitud se lee al ceroTector. |