我在谈论Lua-C API。即使状态有效,对lua_close(lua_State *)
的调用也会导致分段错误。我怎么知道州是有效的?因为到目前为止我已正确使用它。
我会发布消息来源,但它太长了,我不确定它会有所帮助。它只是向我抛出一个分段错误错误,我不知道为什么。在呼叫之前,Lua堆栈是空的。有人可以帮帮我吗?
答案 0 :(得分:1)
Lua C API永远不会导致分段错误。如果在调用lua_close
时发生了段错误,最可能的原因是某些带有自定义__gc
元方法的用户数据失败。来自lua_close
的文档:
销毁给定Lua状态下的所有对象(调用相应的垃圾收集元方法,如果有的话)
确定这些段错误的原因的最佳方法是运行gdb
并在发生时获得回溯。如果使用调试符号编译库,则应该准确到达导致错误的位置。
答案 1 :(得分:0)
你说在通话之前Lua堆栈是空的。但是要在堆栈上调用函数吗?它应该是,即使你打电话给lua_call(L,0,0)
。尝试使用API断言重建Lua。它可能会给你一个更好的错误信息。