由于 SetBackgroundBitmap 导致的内存泄漏

发布于 2024-12-23 03:33:19 字数 337 浏览 0 评论 0原文

我已将图像(平铺)作为背景添加到继承自 wxPanel 的类

在构造函数内,下面的第二行导致内存泄漏(在调试模式下报告)

wxImage bg(_("images/textures/icobbg8.jpg"), wxBITMAP_TYPE_JPEG);

SetBackgroundBitmap(wxBitmap(bg));

如果我注释 不再报告 SetBackgroundBitmap 内存泄漏。 注意 - 在调试过程中,在查看调用堆栈后,我对此语句进行了四舍五入。

请告诉我,如何克服内存泄漏。

I have added a image (tiled) as a background to a class inheriting from wxPanel

Inside the constructor, the second line below is causing memory leakage, (reported in debug mode)

wxImage bg(_("images/textures/icobbg8.jpg"), wxBITMAP_TYPE_JPEG);

SetBackgroundBitmap(wxBitmap(bg));

If i comment the SetBackgroundBitmap memory leak is no longer reported.
Note - During debugging, and after viewing call stack i rounded on this statement.

Please tell me, how to overcome memory leak.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

吃→可爱长大的 2024-12-30 03:33:19

您应该调用 SetBackgroundBitmap(wxNullBitmap)
在你的析构函数中

Class MyPanel:public wxPanel
{
   MyPanel(wxWindow* parent, int x, int y, int w, int h);
   ~MyPanel();
};

MyPanel::~MyPanel()
{
   SetBackgroundBitmap(wxNullBitmap); //set null bitmap backgrond, so not 
                                      //reference bg to overcome the leak
}

Your should call SetBackgroundBitmap(wxNullBitmap)
in your destructor

Class MyPanel:public wxPanel
{
   MyPanel(wxWindow* parent, int x, int y, int w, int h);
   ~MyPanel();
};

MyPanel::~MyPanel()
{
   SetBackgroundBitmap(wxNullBitmap); //set null bitmap backgrond, so not 
                                      //reference bg to overcome the leak
}
海未深 2024-12-30 03:33:19

当构造函数退出时,wxImage bg将被销毁。然而,类仍然存在,并且仍然需要背景图像。

尝试将 bg 从本地属性更改为类的属性。

When the constructor exits, the wxImage bg will be destroyed. However, the class still exists and the background image is still needed.

Try changing the bg from a local to an attribute of the class.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文