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#
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. |