From: Stephen T. <st...@to...> - 2005-11-29 04:18:52
|
On Mon, 2005-11-28 at 16:46 +0100, Dennis Lubert wrote: > Is this all of the error message ? Usually valgrind tells us what it > knows about the memory, e.g.: > > Address 0x3FA50239 is not stack'd, malloc'd or (recently) free'd > > or that it has been freed already or similar, it should come right after > the stacktrace of the invalid read. > > greets > > Dennis No it is not all there is to the message. I am sorry I did not include it all. What I send seemed to be sufficient but I did not know what is expected. ==11257== Invalid read of size 4 ==11257== at 0x804D2F6: guitar::Chord::~Chord() (chord.cpp:32) ==11257== by 0x804EA00: guitar::ChordMap::~ChordMap() (chordmap.cpp:45) ==11257== by 0x804BD44: test_insert() (test_chordmap.cpp:54) ==11257== by 0x804C0A9: main (test_chordmap.cpp:88) ==11257== Address 0x1C878270 is 0 bytes inside a block of size 32 free'd ==11257== at 0x1B900807: operator delete(void*) (in /usr/lib/valgrind/vgpreload_memcheck.so) ==11257== by 0x8057E14: guitar::ChordName::~ChordName() (chordname.cpp:40) ==11257== by 0x804D307: guitar::Chord::~Chord() (chord.cpp:32) ==11257== by 0x804BD0C: test_insert() (test_chordmap.cpp:54) ==11257== by 0x804C0A9: main (test_chordmap.cpp:88) The message after the "Address ... " line does not make sense because line 40 of chordname.map is the end of the destructor. ChordName::~ChordName () { for ( std::vector<ChordName*>::iterator pos = m_aliases.begin(); pos != m_aliases.end(); ++pos ) { delete *pos; } } Stephen |