--- title: cdata - C-Werte und FFI summary: 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. section: reference kind: guide status: reference updated: 2026-10-26 tags: ["API","X4"] sources: ["https://wiki.egosoft.com/X4%20Foundations%20Wiki/Modding%20Support/","https://www.lua.org/manual/5.1/manual.html","https://luajit.org/ext_ffi_api.html"] --- ## 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](wiki:api-standard-ffi-cast-ae33ac09) | [`cdata`](wiki:type-cdata) | Erstellt skalare cdata durch einen C-Typen-cast. Casting validiert keine Speicheradresse. | | [ffi.cdef](wiki:api-standard-ffi-cdef-a564999c) | [`none`](wiki:type-results) | Erklärt C-Typen und -Signaturen für FFI; es lädt keine Bibliothek oder implementiert keine Funktion. | | [ffi.copy](wiki:api-standard-ffi-copy-aa0e2705) | [`none`](wiki:type-results) | Kopiert Bytes in einen zugewiesenen Puffer. Das Weglassen der Länge erfordert einen Lua String und kopiert auch seinen Null-Terminator. | | [ffi.new](wiki:api-standard-ffi-new-86273c2d) | [`cdata`](wiki:type-cdata) | Zuordnen und initialisieren von cdata. Ein Größenargument ist für Arrays oder Strukturen mit variabler Länge erforderlich. | | [ffi.sizeof](wiki:api-standard-ffi-sizeof-18d93d2f) | [`number`](wiki:type-number) \| [`nil`](wiki:type-nil) | Gibt die Byte-Größe eines C-Typs oder cdata zurück; eine unbekannte Größe kann Null erzeugen. | | [ffi.string](wiki:api-standard-ffi-string-4edf893f) | [`string`](wiki:type-string) | Kopiert Daten von einem C-Zeiger in einen Lua-String; ohne Länge liest er zum Null-Terminator. |