【发布时间】:2011-09-11 10:34:02
【问题描述】:
我正在尝试学习 wxWidgets,但我遇到了一个问题,我无法在文档中的任何地方找到解释。我正在尝试理解这个最小的 wxWidgets 程序:
#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;
}
具体来说,为什么frame不泄露?什么时候发布,是谁的责任?在一个正常的程序中,一个指针没有被传递给任何东西并且超出范围而没有被删除几乎可以肯定是一个泄漏,但显然在 wxWidgets 中不是这样。
【问题讨论】:
-
它可能会在框架中注册自己,在窗口关闭时被删除。
-
@Xeo 此代码直接来自文档中的示例代码(为了强调而删减)。我找不到任何删除框架的示例代码,所以我假设它确实以某种方式被删除。同时,我在文档中找不到任何明确说明 Frame 将被删除的内容,所以我希望 SO 上的某个人有完整的故事。
-
啊——我找到了完整的答案here。