2012-01-16 5 views
0
#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はそれ自身のゴミを収集しますか?wxWidgetsにはガベージコレクタがありますか?

+0

あなたはこれに答えをhttp://wiki.wxwidgets.org/Avoiding_Memory_Leaksを読むことをお勧めします。基本的な答えはいいえ、そうではなく、投稿したコードにメモリリークがあります。 – Yuushi

+0

あなたは完全に異なる質問にあなたの質問を編集してはいけません。 –

+0

@yuushiは、あなたがアプリケーションのメインウィンドウとして登録した最初のトップレベルのウィンドウではありませんか? –

答えて

1

AFAIK、これはwxWidgetsでウィンドウを処理する方法です。参照は、あなたが特にを削除してはならず、wxWindow::Destroyでそれらを破壊するよう要求することができないと言います。ユーザーアクションによって閉じられるフレームのデフォルトの動作は、フレームが破棄されることです。

ガベージコレクションはありません(削除しない限りnew wxString()などが漏れます)が、一部のクラスのメモリはライブラリによって自動的に管理されます。

wxWidgets window deletion overview

+0

[アプリケーションシャットダウンの動作](http://docs.wxwidgets.org/stable/wx_wxappoverview.html#wxappshutdownoverview)もここに記載する必要があります。 –

関連する問題