Bedeutung#

LuaJIT-Werte für Zeiger, Strukturen und C-Zahlen. ffi.string kopiert eine C-Zeichenkette in eine Lua-Zeichenkette; ffi.cast ändert die Typsicht, bestätigt aber keine gültige Adresse. Die Lebensdauer des Speichers ist gesondert zu prüfen.

Beispiel#

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

Was geschieht: Wert ist uint64_t mit 42; Art = "cdata"; Bytes = 8.

Dieses Fragment gibt keine Protokollnachricht aus oder schreibt keine Protokollnachricht. Die angezeigten Werte sind die erwarteten Ergebnisse des Beispiels.

Methoden und verwandte Aufrufe#

Funktion Rückgabe Zweck
ffi.cast cdata Erstellt skalare cdata durch einen C-Typen-cast. Casting validiert keine Speicheradresse.
ffi.cdef none Erklärt C-Typen und -Signaturen für FFI; es lädt keine Bibliothek oder implementiert keine Funktion.
ffi.copy none Kopiert Bytes in einen zugewiesenen Puffer. Das Weglassen der Länge erfordert einen Lua String und kopiert auch seinen Null-Terminator.
ffi.new cdata Zuordnen und initialisieren von cdata. Ein Größenargument ist für Arrays oder Strukturen mit variabler Länge erforderlich.
ffi.sizeof number | nil Gibt die Byte-Größe eines C-Typs oder cdata zurück; eine unbekannte Größe kann Null erzeugen.
ffi.string string Kopiert Daten von einem C-Zeiger in einen Lua-String; ohne Länge liest er zum Null-Terminator.