LUA PANIC: unprotected error in call to Lua API (invalid key to 'next')问题

    近日,为了解析XML,将LUA移入系统。刚开始还没有问题,后来在做界面切换压力测试时出现了如题“PANIC: unprotected error in call to Lua API (invalid key to 'next')”的问题,造成系统崩溃,于是开始定位问题。

 首先百度了下,还真发现了个哥们:

前两天在用lua_next遍历一个lua表的时候遇到了:PANIC:unprotected error in call to Lua API (invalid keyto 'next')  仔细检查了下代码和堆栈信息发现没有问题但为什么会说遍历失败呢?

    找到文档看了下原来lua_tolstring只支持number和string类型但是对于number类型在取值后也会转换其在表中的实际内容为string而我遍历的表是使用默认自增索引作为key的这样对key调用这个函数会导致key变成字符串因而遍历有问题。

    如果表的key不一定是string而又要用lua_tolstring获取它的值那么建议先在栈上复制一份然后对于复制的值进行获取。

    试了下,没有用,开始思考其他办法。不过上述也提示了我是LUA读取表出的问题,重新查看代码(代码是前任写的),发现读取的表是一个全局变量,界面切换一次就会调用一次table.insert(),目测应该是他的问题,持续插入而不释放造成表越来越大,最终造成栈破裂,想到这就是要测试验证一下了。

    增加一个全局变量,记录表的大小。发现果然如此。

   

你可能感兴趣的:(LUA)