From: Jeremy W. <jez...@ho...> - 2009-12-23 21:51:34
|
Hi, What version of Win32::GUI are you using? I don't see any memory leak when running your code? You don't need to do anything to 'destroy' a control, Win32::GUI should do the right thing (see below). The same also applies to windows, you can create/destroy (let them go out of scope) just like normal objects and all memory should be released. Well, I think anyway:) Cheers, jez. use strict; use Win32::GUI(); my $main = Win32::GUI::Window->new(-name => 'Main', -text => 'Perl', -width => 200, -height => 200); $main->AddLabel(-name => "Label", -text => "Hello, world", -left => 20, -top => 20, -notify => 1); sub Label_Click { for (1..10000) { #Win32::GUI::DestroyWindow($main->{"Label"}{-handle}); <--- not need#delete $main->{"Label"}; <- not need.$main->AddLabel(-name => "Label", -text => rand(), -left => 20, -top => 20, -notify => 1); } } $main->Show(); Win32::GUI::Dialog(); sub Main_Terminate { -1; } > From: wa...@ma... > To: per...@li... > Date: Wed, 23 Dec 2009 12:22:03 +0300 > Subject: [perl-win32-gui-users] memory leak problem > > Hello, Win32::GUI users! > > I have an application which extensively creates and destroys window controls, such as labels, buttons etc.. > To get rid from window control I use Win32::GUI::DestroyWindow, but seems this method is not working properly, see example: > > ================== > use strict; > use Win32::GUI(); > my $main = Win32::GUI::Window->new(-name => 'Main', -text => 'Perl', -width => 200, -height => 200); > > $main->AddLabel(-name => "Label", -text => "Hello, world", -left => 20, -top => 20, -notify => 1); > > sub Label_Click > { > for (1..1000) > { > Win32::GUI::DestroyWindow($main->{"Label"}{-handle}); > delete $main->{"Label"}; > $main->AddLabel(-name => "Label", -text => rand(), -left => 20, -top => 20, -notify => 1); > } > } > > $main->Show(); Win32::GUI::Dialog(); > > sub Main_Terminate { -1; } > ============= > > When I click on label the program creates/destroys control many times. But seems there is huge memory leak, when using this method. Is there any "proper" way do destroy window control? > > > ------------------------------------------------------------------------------ > This SF.Net email is sponsored by the Verizon Developer Community > Take advantage of Verizon's best-in-class app development support > A streamlined, 14 day to market process makes app distribution fast and easy > Join now and get one step closer to millions of Verizon customers > http://p.sf.net/sfu/verizon-dev2dev > _______________________________________________ > Perl-Win32-GUI-Users mailing list > Per...@li... > https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users > http://perl-win32-gui.sourceforge.net/ _________________________________________________________________ Got more than one Hotmail account? Save time by linking them together http://clk.atdmt.com/UKM/go/186394591/direct/01/ |