c - 为什么Lua C函数中的参数值显示在堆栈底部?

标签 c lua stack virtual-machine

以 lua 的简单 C 函数为例:

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

在本例中,参数显示为索引 12。由于正数表示堆栈自下而上,因此意味着参数位于堆栈的底部,而不是顶部。

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

最佳答案

Lua 堆栈特定于您的函数调用。每个 C 函数调用都有自己的“堆栈”(它实际上是一个更大堆栈的一部分,但对您来说是隐藏的)。您的参数既位于顶部又位于底部,因为它们是堆栈中唯一的内容。

关于c - 为什么Lua C函数中的参数值显示在堆栈底部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31718292/

相关文章:

GCC 编译错误 :/usr/bin/ld: cannot find -lsqlite3. lib

c - 将指针传递给函数

c - Arduino StackArray 不是全局的

c - Lua C API : How to load lua files defined as modules?

nginx - 使用点符号的意外正则表达式结果

python - Pandas 数据框重排堆栈到两个值列(用于因子图)

variables - 如何堆叠来自不同变量的信息?

c - 二叉树中的随机零

c++ - 如何将 CFString 转换为 HFSUniStr255?

c++ - 主函数之外的 lual_newstate