【发布时间】:2015-07-30 16:52:50
【问题描述】:
以一个简单的 lua C 函数为例:
int luacfunc(lua_State *L)
{
printf("%g\n", lua_tonumber(L, 1) + lua_tonumber(L, 2));
}
在这种情况下,参数显示为索引1 和2。由于正数表示堆栈自下而上,这意味着参数位于堆栈底部,而不是顶部。
为什么会这样?是不是需要在每次函数调用时移动整个堆栈来为参数腾出空间?
【问题讨论】:
-
我确定你已经阅读了这个 -lua.org/pil/24.2.html - 它确实提到堆栈是 LIFO,所以我不确定你为什么会看到上述行为。
-
习惯上栈向下增长,而堆向上增长。
标签: c lua stack virtual-machine