我將Lua嵌入到使用Lua5.1的C++應用程序中,而我在使用luaL_newstate()時遇到了一個奇怪的問題。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;
}
功能,我不盡快看到第二個和第三個例子,但第二個內存設計缺陷之間的差異,因爲我嘗試LUA呼叫使用L和第三個工作很好。這裏發生了什麼?
你有C++書嗎?關於將值傳遞給函數的含義是什麼? – GManNickG 2010-09-09 21:25:23