On Jul 25, 7:15 pm, Victor Bazarov <v.Abaza...@comAcast.netwrote:
mohi wrote:
[...]
glibc detected:malloc() memory corruption
Buffer overrun, double deletion of memory, attempt to use
dynamic memory after it has been deleted, allocation using
'new[]' then deletion using 'delete' instead of 'delete[]'...
Just about any undefined behavior could in theory cause it.
Using an uninitialized pointer, for example.
when the program executes almost the same function abt 2000
times with no error it does use dynamically alloted space
and free it at every function call
If you are sure allocations and deallocations are correctly
paired up, then it probably isn't that particular function...
Back in the old days (in C), about 50% of the time, this was
caused by someone allocating strlen(s) bytes, then using strcpy
to copy into the allocated memory. I you're using C++
correctly (std::string, std::vector, etc.), those sort of
problems should be close to non-existant, but if he's got an
array new anywhere, it's a likely candidate. Another
possibility is that something didn't get recompiled when a
header was modified. So the size of a class changes, but the
operator new uses the old size.
--
James Kanze (GABI Software) email:ja*********@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34