On 17-06-24 08:45, Thomas Wollenzin wrote:
Hi,

I have a questing regarding Valgrind report 'Mismatched free() / delete / delete []'.

I understand that Valgrind is redirecting calls to new/delete and so on to its own. On the allocation side I see:

    operator new(unsigned long) (vg_replace_malloc.c:487)


on the deallocation side

    free (vg_replace_malloc.c:989)

Our new/delete operators are overloaded and call effectively malloc/free at some point. Could it be that Valgrind can get confused and not resolve the overloaded operators correctly?


By coincidence I updated the FAQ on this subject yesterday. See

https://valgrind.org/docs/manual/faq.html#faq.mismatches

It doesn't sound like you are using tcmalloc.

I assume that you mean "replacement new/delete", not overload.
See https://en.cppreference.com/w/cpp/memory/new/operator_new
("replaceable allocation functions").
If you really are adding a new overload to the existing set then
I would expect Memcheck to not be able to redirect your overloads.

If (more likely) you are replacing one of the existing set of
standard overloads then are you ensuring that they don't get
inlined? (See the FAQ).

A+
Paul


_______________________________________________
Valgrind-users mailing list
Valgrind-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to