|Windows 7, Visual Studio, C++, MFC dialog
A MFC dialog calls _beginthreadex and starts procedure Start_Server_As_Thread as a new thread.
That procedure instantiates class C_Server_Thread then calls a method that loops until an event indicates time to exit. That class creates a new instance of C_Log_Writer to write information to a log file.
The appropriate event is set, and the main loop exits.
Immediately on regaining control, procedure Start_Server_As_Thread deletes the class with:
The destructor of that class is not called. The destructor contains the code
which does not get run resulting in a memory leak.
I was under the impression that explicitly deleting an instance of a class forced the destructor to be called. What should I do to get that destructor called?
In the code that detects said event I can add a line to delete the logger class. Still, the question will remain, why is the destructor not called?
Just for completeness, a silly mistake that I looked right at several times before finally stepping through the code one step at a time.
if( mp_C_Log_Writer == NULL )
mp_C_Log_Writer = NULL;
The == should have been !=. Lesson learned again, always step through every line of code with the debugger at least once. Sorry to trouble anyone over this.
Thank you for your time
If you work with telemetry, please check this bulletin board: www.irigbb.com
modified 29-Jun-14 16:55pm.