1

我的文件看起来像这样:

主文件

...
bool SyncApp::OnInit(){
    SetTopWindow(new syncWindow(_("(S)FTP Automatic Sync")));
    GetTopWindow()->Show(true);
    return true;
}
...

同步窗口.h

#include <wx/wx.h>

class syncWindow : public wxFrame {
    public:
        syncWindow(wxString title) : wxFrame(NULL, -1, title)  { initialize(); }
    private:
        void initialize();
        wxTextCtrl * serverEntry;
};

同步窗口.cpp

void syncWindow::initialize(){
    serverEntry = new wxTextCtrl(this, wxID_ANY);

    this->AddChild(serverEntry);
}

无论出于何种原因,每当我关闭窗口时,都会出现段错误。如果我不将 serverEntry 作为子项添加到窗口中,则不会出现段错误。我不明白为什么这样做。我在 CentOS 6、g++ 4.7 和 wxGTK 2.8 上。有没有人知道为什么会这样?

4

1 回答 1

1

由于您在构建子窗口时指定了父窗口,因此链接已经存在,并且this->AddChild(serverEntry);在您关闭窗口时调用将导致双重释放或类似错误。http://docs.wxwidgets.org/2.8/wx_wxwindow.html#wxwindowaddchild

wxWindow::AddChild

添加一个子窗口。这是由窗口创建函数自动调用的,因此应用程序程序员不需要。

请注意,此函数主要是 wxWidgets 内部的,不应由用户代码调用。

于 2013-06-22T22:23:38.673 回答