【问题标题】:Why do parameter values in Lua C functions show up at the bottom of the stack?为什么 Lua C 函数中的参数值显示在堆栈底部?
【发布时间】:2015-07-30 16:52:50
【问题描述】:

以一个简单的 lua C 函数为例:

int luacfunc(lua_State *L)
{
    printf("%g\n", lua_tonumber(L, 1) + lua_tonumber(L, 2));
}

在这种情况下,参数显示为索引12。由于正数表示堆栈自下而上,这意味着参数位于堆栈底部,而不是顶部。

为什么会这样?是不是需要在每次函数调用时移动整个堆栈来为参数腾出空间?

【问题讨论】:

标签: c lua stack virtual-machine


【解决方案1】:

Lua 堆栈特定于您的函数调用。每个 C 函数调用都有自己的“堆栈”(它实际上是更大堆栈的一部分,但对您隐藏)。你的论点在顶部和底部,因为它们是你堆栈中唯一的东西。

【讨论】:

    猜你喜欢
    • 2020-06-01
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 2021-11-14
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多