1
루아에서 깊이 중첩 된 테이블을 만들려고합니다. 지난 16 레벨을 중첩하면 프로그램이 다운됩니다.Lua C API 충돌로 생성 된 중첩 테이블
아래 예제 프로그램에서 17 대신 DEPTH를 16으로 변경하면 프로그램이 중단되지 않습니다. 나는 최대 표 깊이가 있다고 말하는 어떤 자원도 찾을 수 없으며, 그렇게 낮은 표정은 이상하게 보입니다. 충돌은 lua_close() 호출 내에서 발생합니다.
C API를 사용하여 루아에서 테이블을 만드는 방법을 잘못 이해했거나 실제로 최대 깊이가 있습니까?
#include <assert.h>
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
#define DEPTH 17
int main(int argc, char* argv[])
{
lua_State *L = NULL;
size_t i = 0;
L = luaL_newstate();
assert(NULL!=L);
luaL_openlibs(L);
// create the root table
lua_newtable(L);
// push DEPTH levels deep onto the table
for (i=0; i<DEPTH; i++)
{
lua_pushstring(L, "subtable");
lua_newtable(L);
}
// nest the DEPTH levels
for (i=0; i<DEPTH; i++)
{
lua_settable(L, -3);
}
lua_close(L);
return 0;
}