I know memory leak checking can sometimes have false positives. I'm wondering if this is one of them, or if I'm doing something wrong.
I turned on memory leak checking by adding
Then callingCode:#define _CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h>
in the App's constructor.Code:_CrtDumpMemoryLeaks();
I traced the issue back to the contructor for a variable included in the app class. The variable is a class I declare in the project.
Code://Class declaration #define NUM_MT_COLORS 16 struct clrTable { COLORREF clrCode; CString clrName; }; class CColorTable { public: CColorTable(); ~CColorTable(); clrTable m_ClrTable[NUM_MT_COLORS+1]; };I get a memory leak error for every instance where a CString is set. I tried moving this to the MainFrame just to see if there was something with this being in the app, and saw the same memory leak errors.Code://The contructor CColorTable::CColorTable() { m_ClrTable[0].clrCode = TT_BLACK; m_ClrTable[0].clrName=_T("Black"); m_ClrTable[1].clrCode = TT_MAROON; m_ClrTable[1].clrName=_T("Maroon"); m_ClrTable[2].clrCode = TT_DKGREEN; m_ClrTable[2].clrName=_T("Dk Green"); m_ClrTable[3].clrCode = TT_BROWN; m_ClrTable[3].clrName=_T("Brown"); m_ClrTable[4].clrCode = TT_DKBLUE; m_ClrTable[4].clrName=_T("Dk Blue"); m_ClrTable[5].clrCode = TT_PURPLE; m_ClrTable[5].clrName=_T("Purple"); m_ClrTable[6].clrCode = TT_AQUA; m_ClrTable[6].clrName=_T("Aqua"); m_ClrTable[7].clrCode = TT_DKGREY; m_ClrTable[7].clrName=_T("Dk Gray"); m_ClrTable[8].clrCode = TT_GREY; m_ClrTable[8].clrName=_T("Gray"); m_ClrTable[9].clrCode = TT_RED; m_ClrTable[9].clrName=_T("Red"); m_ClrTable[10].clrCode = TT_GREEN; m_ClrTable[10].clrName=_T("Green"); m_ClrTable[11].clrCode = TT_YELLOW; m_ClrTable[11].clrName=_T("Yellow"); m_ClrTable[12].clrCode = TT_BLUE; m_ClrTable[12].clrName=_T("Blue"); m_ClrTable[13].clrCode = TT_VIOLET; m_ClrTable[13].clrName=_T("Violet"); m_ClrTable[14].clrCode = TT_LTBLUE; m_ClrTable[14].clrName=_T("Lt Blue"); m_ClrTable[15].clrCode = TT_WHITE; m_ClrTable[15].clrName=_T("White"); m_ClrTable[16].clrCode = -1; //Initially undefined m_ClrTable[16].clrName=_T("Custom"); }
I didn't include the functions in this class that manipulate this table. I didn't put it in the document because this is a multi-doc application and this table is universal to the program.
Is this an example of a false positive in the memory leak checker, or did I do something wrong? If it's me, could someone enlighten me about what to do?
Thanks,
Bill




Reply With Quote
