Re: Glib hashtable memory leak



On Wed, 2008-04-30 at 15:33 +0300, Ovidiu Gheorghies wrote:
> The following program appears to leak memory according to mtrace:

For something to be considered a memory leak, the program must
accumulate the lost memory with each iteration of the suspected code
segment.  Memory tracers often do not have sufficient information to
distinguish genuine leaks from advanced allocation strategies, in which
the library keeps extra storage around for later reuse.  In your case,
you can convert your program to an infinite loop:

#include <glib.h>
int main()
{
  GHashTable* hash_table;
  for (;;) {
    hash_table=g_hash_table_new(g_str_hash, g_str_equal);
    g_hash_table_unref (hash_table);
  }
  return 0;
}

If there were a leak in g_hash_table_new/unref, this program would soon
consume large amounts of memory.  I observe that its memory stays within
bounds, which means that it doesn't leak, despite the mtrace diagnostic.




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]