#include <stdio.h>
#include <stdlib.h>
class Node{
public:
int a;
int b;
};
extern "C" void demoNew(void) {
Node *n0 = new Node;
Node *n1 = (Node *)new char[sizeof(Node)];
printf("no=%p n1=%p\n", n0, n1);
delete n0;
delete[] n1;
}
int main(int argc, char ** argv) {
demoNew();
return 0;
}
For reference and comparison, on x86_64 Linux with
g++ (GCC) 6.4.1 20170727 (Red Hat 6.4.1-1)
libstdc++-6.4.1-1.fc25.x86_64
the relevant interceptions are
--13225-- REDIR: 0x4ec9a80 (libstdc++.so.6:operator new(unsigned long))
redirected to 0x4c2e18e (operator new(unsigned long))
--13225-- REDIR: 0x4ec9b40 (libstdc++.so.6:operator new[](unsigned long))
redirected to 0x4c2e87b (operator new[](unsigned long))
--13225-- REDIR: 0x4ec7a70 (libstdc++.so.6:operator delete(void*)) redirected
to 0x4c2f1ac (operator delete(void*))
--13225-- REDIR: 0x4ec7aa0 (libstdc++.so.6:operator delete[](void*)) redirected
to 0x4c2f67c (operator delete[](void*))
and valgrind does not complain about anything.
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Valgrind-users mailing list
Valgrind-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/valgrind-users