我们将 Lua 集成到一个项目中,但我们发现了一个奇怪的测试用例,它在 ARM 上始终崩溃:
data = {"A","B","C","D","E","F","G","H","I","J"};
function OnTick(_object)
local params = {};
return 1;
end
以下是如何从 C++ 调用函数的基础知识:
lua_getglobal(Lua, function_name->c_str()); // Push function name that we want to call onto the stack
if (lua_isnil(Lua, -1))
{
// Error
lua_pop(Lua, 1);
return -1;
}
lua_pushlightuserdata(Lua, (void*)object); // Push the reference object onto the stack
if (lua_pcall(Lua, 1, 1, 0) != 0)
{
// Error
lua_pop(Lua, 1);
return -1;
}
lua_pop(Lua, 1);
return 1;
OnTick 在被调用大约 5 次后崩溃。
当垃圾收集器尝试清理时,Lua 似乎正在崩溃。其他人遇到过这样的事情并解决了吗?