C++ Lua跟踪来自C++;
我有可以从Lua脚本显示的帧,如下所示:C++ Lua跟踪来自C++;,c++,lua,C++,Lua,我有可以从Lua脚本显示的帧,如下所示: frm=MainFrame.new() 当用户运行此命令时,会弹出一个框架并显示出来。Frame类具有成员函数,如添加,关闭。现在不运行frm:close()用户也可以点击窗口的关闭按钮,从而关闭窗口。执行此操作后,如果用户运行以下命令: frm:add() >由于内存违反程序崩溃,如 FRM不是 nIL/COD>,而是使用C++ >代码>删除> /Cuff>命令在C++后台删除。然而,Lua没有意识到这一点,它在内存中引用的内容已经被删除。在C+
frm=MainFrame.new()
当用户运行此命令时,会弹出一个框架并显示出来。Frame类具有成员函数,如添加
,关闭
。现在不运行frm:close()
用户也可以点击窗口的关闭按钮,从而关闭窗口。执行此操作后,如果用户运行以下命令:
frm:add()
<> >由于内存违反程序崩溃,如<代码> FRM<代码>不是<代码> nIL/COD>,而是使用C++ >代码>删除> /Cuff>命令在C++后台删除。然而,Lua没有意识到这一点,它在内存中引用的内容已经被删除。在C++中删除引用的内存时,是否有办法使<代码> FRM <代码>变量>代码> nIL/COD>?p>
<> >用户可以运行<代码> FrM1=框架>新的()(代码)>和代码> FrM2=Frime.FrM< < /Cord>和<代码> FRM2<代码>是框架类型,但假设只有“代码> FRM1<代码>是通过点击窗口关闭按钮关闭的,因此只有try
和catch
块无助于捕获内存冲突
编辑1:
Lua包装:
int MainFrame_NumberofFrames(lua_State* L)
{
MainFrame* mframe= luaW_check<MainFrame>(L, 1);
int NumWorkSheets=0;
NumFrames=mframe->GetNumberOfFrames();
lua_pushnumber(L,NumFrames);
return 1;
}
int MainFrame_AddNewFrame(lua_State* L)
{
int nargs=lua_gettop(L);
MainFrame* mframe= luaW_check<MainFrame>(L, 1);
if(nargs==1){
if(!mframe->AddNewFrame(wxEmptyString)) luaL_error(L,"Unexpected error occurred");
}
但是,当我跑步时:
frm:add()
<>程序崩溃为<>代码MyFrAMelist变量,当主框架被用户关闭时删除。< /P>你是否在C++代码中写了LUA绑定?对我来说,这看起来像是Lua绑定中的一个bug。你在C++代码中写了LUA绑定吗?对我来说,这看起来像Lua绑定中的一个bug。
frm:count() --It returns even though the main frame is closed
frm:add()