【问题标题】:wxWidgets has some sort of garbage collector?wxWidgets 有某种垃圾收集器?
【发布时间】:2012-02-11 02:16:57
【问题描述】:
#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 会收集它自己的垃圾吗?

【问题讨论】:

  • 您可能想阅读wiki.wxwidgets.org/Avoiding_Memory_Leaks 以获取答案。基本答案是否定的,它没有,而且您发布的代码存在内存泄漏。
  • 你不能将你的问题编辑成一个完全不同的问题。
  • @yuushi 不是您创建的第一个注册为应用程序主窗口的顶级窗口吗?
  • @JohannesSchaub-litb 是的,你可能是对的。我要回过头来用 wxWidgets 查看有关代码的内容,并意识到我总是创建一个从 wxFrame 继承的单独类,然后定义了一个 onExit() 方法来破坏框架。我现在不太确定我最初的评论。希望对 wxWidgets 有更多经验的人能给出更好的答案。

标签: c++ c memory garbage-collection wxwidgets


【解决方案1】:

AFAIK,这就是你应该如何使用 wxWidgets 处理窗口。该参考资料说您特别不得删除它们,并且您可以使用wxWindow::Destroy 请求将它们销毁。由用户操作关闭的框架的默认行为是该框架被销毁。

没有这样的垃圾回收(例如,new wxString() 除非被删除否则会泄漏),但某些类的内存将由库自动管理。

wxWidgets window deletion overview

【讨论】:

猜你喜欢
  • 2018-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-07
  • 2013-04-01
  • 2012-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多