3.1 Der Stapelspeicher Korrektur einreichen Original anzeigen

Lua benutzt einen virtuellen Stapelspeicher, um Werte von und zu C zu übergeben. Jedes Element dieses Stapelspeichers repräsentiert einen Lua-Wert (nil, Zahl, Zeichenkette etc.).

Immer wenn Lua C aufruft, bekommt die aufgerufene Funktion einen neuen Stapelspeicher, welcher unabhängig von vorherigen oder noch aktiven von C-Funktionen ist. Dieser Stapelspeicher enthält initial sämtliche Argumente für die C-Funktion und dort legt die C-Funktion die zurückzugebenden Ergebnisse für den Aufrufer ab. (s. lua_CFunction).

Der Bequemlichkeit wegen folgen die meisten Abfrageoperationen der API keiner strikten Stapelspeicher-Vorgehensweise. Stattdessen können diese über einen index auf beliebige Elemente im Stapelspeicher zeigen: Ein positiver Index repräsentiert eine absolute Position (beginnend bei 1); ein negativer Index repräsentiert ein Offset, relativ zum oberen Ende des Stapelspeichers. Genauer gesagt, wenn der Stapelspeicher n Elemente besitzt, dann repräsentiert der Index 1 das erste Element (d. h. das Element, welches zuerst auf dem Stapelspeicher abgelegt wurde) und der Index n repräsentiert das letzte Element; der Index -1 repräsentiert ebenfalls das letzte Element (d. h. das Element ganz oben) und der Index -n repräsentiert das erste Element. Wir bezeichnen einen Index als valide wenn dieser zwischen 1 und dem oberen Ende des Stapelspeichers liegt (d. h. wenn 1 ≤ abs(index) ≤ top).