#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

Reply via email to