Я встраиваю Lua в приложение C ++, используя Lua5.1, и у меня странная проблема с luaL_newstate ().
Это работает:
lua_State *L = NULL;
int main()
{
L = luaL_newstate();
return 0;
}
Я недавно реструктурировал свой код и решил создать функцию инициализации следующим образом:
lua_State *L = NULL;
void init_lua(lua_State *L)
{
L = luaL_newstate();
}
int main()
{
init_lua(L);
return 0;
}
Это не работает. По какой-то причине luaL_newstate () всегда возвращает NULL в этой ситуации. Но, чтобы добавить к путанице, это работает:
lua_State *L = NULL;
void init_lua(lua_State **L)
{
*L = luaL_newstate();
}
int main()
{
init_lua(&L);
return 0;
}
Функционально я не вижу разницы между вторым и третьим примерами, и, тем не менее, второй segfaults, как только я пытаюсь вызвать lua, используя L, а третий работает просто отлично. Что здесь происходит?