We have a problem in our project,we use lua 5.1 as our scripting language.
但是当使用lua_pushnumber将太多数据从C ++一次传递到lua时函数,lua堆栈看起来像堆栈溢出,并导致内存的其他部分在C ++中已被编写,并且在回调返回时会导致我们的系统崩溃到C ++。我想知道是否有一些参数可以控制尺寸lua堆栈大小。我尝试更改lua.h中定义的参数LUA_MINSTACK,但似乎不起作用。我也尝试使用lua_checkstack()避免推送太多的数字无法堆叠lua,但它也不起作用
getNineScreenEntity(lua_State* L)
{
DWORD screenid = GET_LUA_VALUE(DWORD,1)
struct EntryCallback : public ScreenEntityCallBack
{
EntryCallback(){ }
bool exec(ScreenEntity * entity)
{
list.push_back(entity)
return true;
}
std::vector<ScreenEntity*> list;
};
EntryCallback exec;
Screen* screen = ScreenManager::getScreenByID(screenid);
if (!screen)
return 0;
screen->execAllOfScreenEntity(exec);
int size = 0;
std::vector<ScreenEntity*>::iterator vit = exec.list.begin();
for (; vit != exec.list.end(); ++vit)
{
lua_pushnumber(L,(*vit)->id);
++size;
}
return size;
}
似乎在一个屏幕中有太多实体时,我们的程序将崩溃。
我们在项目中遇到问题,我们使用lua 5.1作为脚本语言。但是,当使用lua_pushnumber在一个函数中将太多数据从C ++传递到lua时,lua堆栈看起来像是堆栈溢出...