<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<TITLE>Message</TITLE>
<META content="MSHTML 6.00.6000.16441" name=GENERATOR></HEAD>
<BODY>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN class=062355500-11052007>Also
look at <STRONG><FONT color=#000000 size=3>#pragma
init_seg</FONT></STRONG></SPAN></FONT></DIV>
<BLOCKQUOTE style="MARGIN-RIGHT: 0px">
<DIV></DIV>
<DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left><FONT
face=Tahoma size=2>-----Original Message-----<BR><B>From:</B>
vtkusers-bounces+paul=opes.com.au@vtk.org
[mailto:vtkusers-bounces+paul=opes.com.au@vtk.org] <B>On Behalf Of </B>Marcus
Wilkinson<BR><B>Sent:</B> Thursday, 10 May 2007 8:32 PM<BR><B>To:</B>
vtkusers@vtk.org<BR><B>Subject:</B> [vtkusers] Memory leak I cant understand:
Detected memory leaks!Dumping Objects -><BR><BR></FONT></DIV>Hi
All,<BR><BR>I have limited experience with VTK, but from what I know about
memory management, I should be getting no memory leaks at all in my
application at all.<BR>I have 2 DLL's, one containing my main sound analysis
program and another holding VTK code for visualisation. <BR>Sound.dll loads
Visualisation.dll via a call to
LoadLibrary("Vlisualisation.dll");<BR><BR>Inside Visualisation.dll, I have a
class "CVisualisationApp", which is instantiated by static functions in the
Visualisation.dll such as "CreateSystem(), DestroySystem() etc". These static
functions are called externally by Sound.dll. This CVisualisationApp class
holds all references to VTK objects and extends CWinApp - it also holds the
render function and handles all UI basically. There are no calls to VTK
elements outside of this class. <BR><BR>This CVisualisationApp class is
instantiated by one of the static functions {"CreateSystem()"} which just
does:<BR>theApp = new CVisualisationApp();<BR><BR>so basically, by
Visualisation.h looks something like this: <BR><BR
style="COLOR: rgb(0,0,102)">
<DIV style="MARGIN-LEFT: 40px"><FONT style="COLOR: rgb(0,0,102)" size=1>class
CVisualisationApp : public CWinApp</FONT><BR style="COLOR: rgb(0,0,102)"><FONT
style="COLOR: rgb(0,0,102)" size=1>{</FONT><BR
style="COLOR: rgb(0,0,102)"><FONT style="COLOR: rgb(0,0,102)"
size=1>public:</FONT><BR style="COLOR: rgb(0,0,102)"><FONT
style="COLOR: rgb(0,0,102)" size=1>
CVisualisationApp();</FONT><BR style="COLOR: rgb(0,0,102)"><FONT
style="COLOR: rgb(0,0,102)" size=1>
~CVisualisationApp();</FONT><BR style="COLOR: rgb(0,0,102)"><BR
style="COLOR: rgb(0,0,102)"><FONT style="COLOR: rgb(0,0,102)"
size=1>public:</FONT><BR style="COLOR: rgb(0,0,102)"><FONT
style="COLOR: rgb(0,0,102)" size=1> virtual BOOL
InitInstance();</FONT><BR style="COLOR: rgb(0,0,102)"><FONT
style="COLOR: rgb(0,0,102)" size=1></FONT><FONT style="COLOR: rgb(0,0,102)"
size=1> BOOL Render(double dt); </FONT><BR
style="COLOR: rgb(0,0,102)"><FONT style="COLOR: rgb(0,0,102)"
size=1> //more functions and fun</FONT><BR
style="COLOR: rgb(0,0,102)"><FONT style="COLOR: rgb(0,0,102)"
size=1>}</FONT><BR></DIV><BR>and my Visualisation.cpp looks a bit like
this:<BR><BR style="COLOR: rgb(51,0,153)">
<DIV style="MARGIN-LEFT: 40px"><FONT style="COLOR: rgb(0,0,102)"
size=1>CVisualisationApp *theApp = 0;</FONT><BR
style="COLOR: rgb(0,0,102)"><BR style="COLOR: rgb(0,0,102)"><FONT
style="COLOR: rgb(0,0,102)" size=1>extern "C" __declspec( dllexport
)</FONT><BR style="COLOR: rgb(0,0,102)"><FONT style="COLOR: rgb(0,0,102)"
size=1>int __cdecl createSystem() { </FONT><BR
style="COLOR: rgb(0,0,102)"><FONT style="COLOR: rgb(0,0,102)"
size=1> </FONT><FONT style="COLOR: rgb(0,0,102)" size=1>if
(theApp != 0)</FONT><BR style="COLOR: rgb(0,0,102)"><FONT
style="COLOR: rgb(0,0,102)" size=1>
return 0;</FONT><BR style="COLOR: rgb(0,0,102)"><FONT
style="COLOR: rgb(0,0,102)" size=1> theApp = new
CVisualisationApp();</FONT><BR style="COLOR: rgb(0,0,102)"><FONT
style="COLOR: rgb(0,0,102)" size=1>
theApp->InitInstance();</FONT><BR style="COLOR: rgb(0,0,102)"><FONT
style="COLOR: rgb(0,0,102)" size=1> return 1;</FONT><BR
style="COLOR: rgb(0,0,102)"><FONT size=1><SPAN
style="COLOR: rgb(0,0,102)">}</SPAN><BR style="COLOR: rgb(0,0,102)"><BR
style="COLOR: rgb(0,0,102)"><SPAN
style="COLOR: rgb(0,0,102)">CVisualisationApp::CVisualisationApp()</SPAN><SPAN
style="COLOR: rgb(0,0,102)"></SPAN><BR style="COLOR: rgb(0,0,102)"><SPAN
style="COLOR: rgb(0,0,102)">{<BR> //Instantiation stuff<BR
style="COLOR: rgb(0,0,102)"></SPAN><SPAN
style="COLOR: rgb(0,0,102)">}<BR><BR></SPAN></FONT><FONT size=1><SPAN
style="COLOR: rgb(0,0,102)">CVisualisationApp::InitInstance() </SPAN><SPAN
style="COLOR: rgb(0,0,102)"></SPAN><BR style="COLOR: rgb(0,0,102)"><SPAN
style="COLOR: rgb(0,0,102)">{<BR> //Initialisation stuff<BR
style="COLOR: rgb(0,0,102)"></SPAN><SPAN
style="COLOR: rgb(0,0,102)">}</SPAN><BR></FONT><BR><FONT size=1><SPAN
style="COLOR: rgb(0,0,102)"></SPAN><BR></FONT></DIV><FONT size=2>Now my
problem is that even if I don't create the 'theApp' object (comment out the
body of the createSystem() function), I still get memory leaks from VTK. I
guess my question is, could VTK detect memory leaks from my main sound.dll app
(although I don't think there are any leaks there) - or, does vtk have some
static functions that could be causing memory leaks even though I don't create
any objects. The output dump looks something like this: </FONT><BR><BR><BR>
<DIV style="MARGIN-LEFT: 40px"><FONT size=1>Detected memory
leaks!</FONT><BR><FONT size=1>Dumping objects -></FONT><BR><FONT
size=1>{32407} normal block at 0x0B70B070, 4 bytes long.</FONT><BR><FONT
size=1> Data: <PWh > 50 57 68 0B </FONT><BR><FONT size=1>{32406}
normal block at 0x0C996730, 8 bytes long.</FONT><BR><FONT size=1> Data:
<@f > 40 66 99 0C 00 00 00 00
</FONT><BR><FONT size=1>{32405} normal block at 0x0C997A38, 21 bytes
long.</FONT><BR><FONT size=1> Data: <System Shutting > 53 79 73 74
65 6D 20 53 68 75 74 74 69 6E 67 20 </FONT><BR><FONT size=1>{32404} normal
block at 0x0C997980, 120 bytes long. </FONT><BR><FONT size=1> Data: <\
p # > 5C 9F 70
0A 01 00 00 00 00 CD CD CD 23 03 02 00 </FONT><BR><FONT size=1>{32368} normal
block at 0x0C9971D8, 168 bytes long.</FONT><BR><FONT size=1> Data:
<
> CC B9 8F 09 01 00 00 00 00 CD CD CD 17 03 02 00 </FONT><BR><FONT
size=1>{32367} normal block at 0x0C9970F0, 168 bytes long.</FONT><BR><FONT
size=1> Data:
<
> CC B9 8F 09 01 00 00 00 00 CD CD CD 15 03 02 00 </FONT><BR><FONT
size=1>{32366} normal block at 0x0C997008, 168 bytes long. </FONT><BR><FONT
size=1> Data:
<
6 > CC B9 8F 09 02 00 00 00 00 CD CD CD 36 03 02 00
</FONT><BR><FONT size=1>{32365} normal block at 0x0C996640, 176 bytes
long.</FONT><BR><FONT size=1> Data: <
2r ( > A4 32 72
0A 01 00 00 00 00 CD CD CD 28 03 02 00 </FONT><BR><FONT size=1>{32364} normal
block at 0x0C996588, 120 bytes long</FONT><BR><FONT size=1>{{{ Pages and
pages more }}}</FONT><BR></DIV><BR><BR>Thanks in advance for any thoughts you
have - feel like my brain is melting on this one. If you need, I can provide a
list of libs and include files. <BR><BR>Marcus<BR></BLOCKQUOTE></BODY></HTML>