Basically, make really, REALLY sure that if your assigning a sting with STRALLOC/fread_string, you always use STRALLoc to assign, and STRFREE to free it. If you use str_dup/fread_string_nohash, always use str_dup and DISPOSE.
If you allocate a local string inside of a function, you HAVE to free it. If you are going to be assigning into a global variable(ch->name, for example), check that it is allocated. If so, free it, then assign the new value.
If you are assigning with the wrong functions or not freeing properly, this can cause memory leaks.
Since I don't know specifics, thats about as much as I can help with. If you have example, I can show you how to do it properly.