У wxWidgets есть какой-то сборщик мусора? - PullRequest
0 голосов
/ 16 января 2012
#include <wx/wx.h>

class MyApp : public wxApp
{
    virtual bool OnInit();
};

IMPLEMENT_APP(MyApp)

bool MyApp::OnInit()
{
    wxFrame *frame = new wxFrame(NULL, -1, _("Hello World"), wxPoint(50, 50),
                                  wxSize(450, 350));       
    frame->Show(true);
    return true;
}

Этот код работает нормально, и это тот код, если его увидеть там. Я размещаю wxFrame в куче, и я никогда не беспокоюсь о памяти, собирает ли wxWidgets свой собственный мусор?

1 Ответ

1 голос
/ 16 января 2012

AFAIK, вот как вы должны обрабатывать окна с помощью wxWidgets. В справочнике говорится, что вы, в частности, не должны удалять их, и что вы можете запросить их уничтожение с помощью wxWindow::Destroy. Поведение по умолчанию для фрейма, закрытого действием пользователя, заключается в том, что фрейм уничтожен.

Сборка мусора как таковая отсутствует (например, new wxString() будет вытекать без удаления), но память для некоторых классов будет автоматически управляться библиотекой.

Обзор удаления окна wxWidgets

...