[sword-devel] Mem leak in Sword

Troy A. Griffitts sword-devel@crosswire.org
Sat, 14 Dec 2002 13:54:25 -0700


Joachim,

Your test program looks perfectly valid.  I'll have a look at the code.

I added a new interface: SWCacher, that many classes, especially most of 
the drivers, implement now.  It gives standard functions to clear any 
cached data they are holding.  It was originally added out of the need 
for SWORD to have a SMALLER memory consumption for handheld devices, but 
maybe I screwed something up :)  The concept isn't all complete yet. 
Eventually, I'm hoping to have a CacheMgr that we can add any SWCacher 
implementor objects to, and it will take care of flushing the oldest 
accessed caches and be tunable.

I'll keep ya posted on what I find out.
	-Troy.



Joachim Ansorg wrote:
> Troy,
> 
> I was working on BibleTime's parallel display of more than one lexicon, which 
> displays only the keys which are in all selected modules.
> 
> Please have a look at the following test program, to go though WebstersDict it 
> uses almost 400MB of Ram. I think it's a mem leak.
> 
> Am I doing something wrong or is it really a bug in Sword?
> I'm not sure if it only happens with WebstersDict.
> 
> Joachim
> 
> 
> ------------------------------------------------------------------------
> 
> #include <swmgr.h>
> #include <swmodule.h>
> 
> #include <iostream.h>
> 
> using namespace std;
> using namespace sword;
> 
> int main (int argc, char* argv[]) {
> 	SWMgr mgr;
> 	SWModule* mod = mgr.Modules["WebstersDict"];	
> 
> 	(*mod) = TOP; //first entry
> 
> 	do {
> 		cout << mod->KeyText() << endl;
> 		(*mod)++;
> 	} while ( !mod->Error() );
> 
> 	(*mod) = TOP; //back to first entry
> 
> };