返回

抱歉,刚才用了自动排版,都乱了,只好重发
请教一个Lua的问题,麻烦你了。
我要从C的函数里给Lua脚本返回一个数组,我是这么写的:
    lua_newtable(L);//创建表
    lua_pushnumber(L,1);//把value压入
    lua_rawseti(L,-2,1);//设置t[1]=v
    lua_pushnumber(L,2);    
    lua_rawseti(L,-2,2);
    lua_pushnumber(L,3);    
    lua_rawseti(L,-2,3);
    return 1;
在Lua脚本中这样使用:
data = testext.Test()
for i=1,table.getn(data),1 do
	print(data [i])	
end
程序执行完后会出现dbgheap错误。调试显示是在解释器执行lua_close(L)的时候,
释放内存发生错误。我查看了lua的maillist,里面也说就是这样返回一个数组的,
但是没有提到有错误发生。如果我返回一般的Table就没有问题,比如
    lua_newtable(L);
    lua_pushstring(L, "mydata");
    lua_pushnumber(L,66);
    lua_settable(L,-3);	
    return 1;
请问这是为什么呢?难道是Lua的bug吗?

谢谢

名字: 自动排版 密码:

回复 | (1222) | jzhang | 2006-08-16 05:20:27