|

Chilkat Email Components Home
C++ Memory Leaks
Back
There are memory leaks in the Chilkat C++ libs!
Actually, NO. This source code example discusses the issue.
#define _CRTDBG_MAP_ALLOC
#include "stdafx.h"
#include <stdio.h>
#include <crtdbg.h>
#include "C:/ck2000/components/ChilkatLib/Package/include/CkSettings.h"
#include "C:/ck2000/components/ChilkatLib/Package/include/CkXml.h"
void TestLoadXml(void)
{
CkXml xml;
xml.LoadXmlFile("crisp.xml");
xml.SaveXml("out.xml");
}
// Many C++ developers incorrectly think there are memory leaks
// in the Chilkat C++ libraries. This is not the case.
// For performance reasons Chilkat C++ classes *may* utilize internal
// structures in memory that are built/initialized once and re-used
// during subsequent method calls. Calling CkSettings::cleanupMemory
// deallocates these structures. However, once cleanupMemory is called,
// no other Chilkat methods can be called, including object destructors.
// The cleanupMemory method is provided for those programmers that wish
// to check for memory leaks.
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
TestLoadXml();
// Only necessary if checking for memory leaks.
// Only call just before exiting the program.
// In this example you will notice that if cleanupMemory
// is commented out, it will appear as if there are memory leaks.
// If you call cleanupMemory, you will see that there are no leaks.
// In fact, if you write a "for" loop an call TestLoadXml 100,000 times,
// you will see that memory usage does not steadily increase. This is
// because the internal structures that may be created are created once
// and re-used.
CkSettings::cleanupMemory();
_CrtDumpMemoryLeaks();
return 0;
}
|