Блог пользователя AFGhazy

Автор AFGhazy, история, 9 лет назад, По-английски

how can I free all the memory used by a trie ?!

  • Проголосовать: нравится
  • -1
  • Проголосовать: не нравится

»
9 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

memset(t, 0, sizeof t);

»
9 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

How you implements a trie?

»
9 лет назад, # |
  Проголосовать: нравится +17 Проголосовать: не нравится

Well, it certainly depends on the implementation. If your trie is something like this:

class trie{
    map<char, trie> M;
};
trie Root;

Then you don't need to free anything. Though Root.M.clear() does the thing. On the other hand, if it looks like this:

class trie{
    ~trie(){
        forn(i, 256) if( trie[i]) delete trie[i];
    }
    trie *[256];
};

Always remember to implement a destructor if you don't want to have memory leaks.

And lastly, if you used indexes instead of pointers, feel free to use a memset(trie, 0, sizeof(trie)), but bear in mind this won't free the memory but zero its content. (You can now safely overwrite it), :)