当你使用 Lua API 时,就有责任保证其坚固性。
特别需要注意的是,你有责任控制不要堆栈溢出。
你可以使用 lua_checkstack
这个函数来扩大可用堆栈的尺寸。
无论何时 Lua 调用 C ,
它都只保证 LUA_MINSTACK
这么多的堆栈空间可以使用。
LUA_MINSTACK
一般被定义为 20 ,
因此,只要你不是不断的把数据压栈,通常你不用关心堆栈大小。
所有的查询函数都可以接收一个索引,只要这个索引是任何栈提供的空间中的值。
栈能提供的最大空间是通过 lua_checkstack
来设置的。
这些索引被称作可接受的索引,通常我们把它定义为:
(index < 0 && abs(index) <= top) || (index > 0 && index <= stackspace)
注意,0 永远都不是一个可接受的索引。(译注:下文中凡提到的索引,没有特别注明的话,都指可接受的索引。)