C++ Lua跟踪来自C++;

C++ Lua跟踪来自C++;,c++,lua,C++,Lua,我有可以从Lua脚本显示的帧,如下所示: frm=MainFrame.new() 当用户运行此命令时,会弹出一个框架并显示出来。Frame类具有成员函数,如添加,关闭。现在不运行frm:close()用户也可以点击窗口的关闭按钮,从而关闭窗口。执行此操作后,如果用户运行以下命令: frm:add() >由于内存违反程序崩溃,如 FRM不是 nIL/COD>,而是使用C++ >代码>删除> /Cuff>命令在C++后台删除。然而,Lua没有意识到这一点,它在内存中引用的内容已经被删除。在C+

我有可以从Lua脚本显示的帧,如下所示:

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<代码>是通过点击窗口关闭按钮关闭的,因此只有 FRM1<代码>被从C++侧删除。 我在Windows 10上使用tdm gcc mingw 4.8.1,因此常规的
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()