luaコードを呼び出すために、以下のようなC ++コードがあります
for (int i =0; i < 2000; i++)
{
lua_getglobal(g_L, "AnalyzeScript");
lua_pushstring(g_L, "1");
lua_pushstring(g_L, "2");
lua_pushstring(g_L, "3");
if(lua_pcall(g_L,3,0,0) != 0)
{
// char temp[200]={0}; sprintf(temp, "err: %s", lua_tostring(g_L, -1));
// MessageBoxA(0,temp,0,0);
}
以下のようなluaコード
local cnt = 0
function AnalyzeScript(foldername, filename, pOut)
cnt = cnt + 1
print(cnt)
end
「死んだコルーチンを再開できません」(コルーチンは別の場所にあります)を除いて、すべて問題ありません
lua func を 2000 回呼び出すと lua スタックが台無しになるようです。2000 を 200 に変更すると、すべて問題なく動作します。
なぜ?