【发布时间】:2014-09-03 22:44:53
【问题描述】:
我正在开发一个使用 Lua 编写脚本的程序,有时它会崩溃。使用 GDB,我想我找到了问题,但我不知道它是否解决了它,因为段错误只会偶尔发生。所以,旧代码是这样的:
void Call(std::string func){
lua_getglobal(L, func.c_str()); //This is the line GDB mentioned in a backtrace
if( lua_isfunction(L,lua_gettop(L)) ) {
int err = lua_pcall(L, 0, 0,0 );
if(err != 0){
std::cout << "Lua error: " << luaL_checkstring(L, -1) << std::endl;
}
}
}
问题是,这个函数每秒会被调用几次,但它需要调用的函数并不总是被定义,所以我认为堆栈会溢出。我添加了以下行:
lua_pop(L,lua_gettop(L));
并且段错误不再发生。会不会是这个问题?
【问题讨论】: