关于Lua Stack的问题
2026/08
12
19:08
问题
在Lua中调用一个C函数,此C函数需要返回一批(>1000个)整数数值
方法1 – 直接压栈处理
static int lua_get_valus(lua_State* L)
{
for(int i=0; i<1000; ++i)
{
lua_pushinteger(L, i);
}
return 1000;
}
表现:会导致lua栈溢出,内存各种异常。
方法2 – 栈扩容
static int lua_get_valus(lua_State* L)
{
lua_checkstack(L, 1000); // 扩容,不崩了
for(int i=0; i<1000; ++i)
{
lua_pushinteger(L, i);
}
return 1000;
}
方法3 – 用Table传递
lua_newtable(L);
auto tp = lua_gettop(m_L);
for(int i=0; i<1000; ++i)
{
lua_pushnumber(L, i);
lua_rawseti(L, tp, nextIdx+1);
}
return 1
CopyRights: The Post by BY-NC-SA For Authorization,Original If Not Noted,Reprint Please Indicate From 老刘@开发笔记
Post Link: 关于Lua Stack的问题
Post Link: 关于Lua Stack的问题