malloc: *** d'erreur pour objet: pointeur être libérés n'a pas été alloué *** définir un point d'arrêt dans malloc_error_break pour déboguer

Quelqu'un peut-il m'aider à comprendre où je veux en venir cette erreur. Je sais que c'est probablement une double délétion ou quelque chose comme ça. Pour le fond c'est une implémentation de l'huffman de l'arbre que vous pouvez facilement réaliser sur wikipedia.

CharCountNode implémentation de la classe

int main()
{
  ifstream input;
  input.open("input.txt");

  MinPriorityQueue<CharCountNode> heap;
  map<char, int> m;

  while(input.good())
    m[input.get()] += 1;

  for( map<char, int>::const_iterator it = m.begin(); it != m.end(); ++it )
    heap.enqueue(CharCountNode(it->first, it->second));


  while(heap.getSize() > 1)
  {
    CharCountNode a, b, parent;

    a = heap.dequeue();
    b = heap.dequeue();
    parent = CharCountNode('*', a.getCount() + b.getCount());

    parent.left = &a;
    parent.right = &b;

    heap.enqueue(parent);
  }
}
définissez un point d'arrêt dans malloc_error_break à déboguer.
Appliquer valgrind et fixer le premier chose dont elle se plaint. Répétez jusqu'à ce que le programme fonctionne correctement.
Je vais essayer
Au moment de ce post: valgrind ne fonctionne pas avec Mac OS X 10.10.
Utiliser une machine virtuelle.

OriginalL'auteur waldyr.ar | 2014-04-02