Total Articles 180
[debug_new.h]
#ifndef __DEBUG_NEW_H__ #define __DEBUG_NEW_H__ #include <malloc.h> #include <stdio.h> void* operator new(size_t size) { void* res = malloc(size); printf("void* operator new(size_t size) %u %p\n", size, res); return res; } void* operator new(size_t size, const int foo) { void* res = malloc(size); printf("void* operator new(size_t size, const int foo) %u %d %p\n", size, foo, res); return res; } void* operator new(size_t size, const char* bar) { void* res = malloc(size); printf("void* operator new(size_t size, const char* bar) %u %s %p\n", size, bar, res); return res; } void operator delete(void* p) { printf("void operator delete(void* p) %p\n", p); free(p); } void operator delete(void *p, const int foo) { printf("void operator delete(void *p, const int foo) %p %d\n", p, foo); free(p); } void operator delete(void *p, const char* bar) { printf("void operator delete(void *p, const char* bar) %p %s\n", p, bar); free(p); } #endif // __DEBUG_NEW_H__
[new_test.cpp]
#include "debug_new.h" void test1() { int* p = new int; operator delete (p); } void test2() { int* p = new (33) int; operator delete(p, 44); } void test3() { int* p = new ("hello") int; operator delete(p, "world"); } int main() { printf("\ntest1\n"); test1(); printf("\ntest2\n"); test2(); printf("\ntest3\n"); test3(); }
[result]
test1 void* operator new(size_t size) 4 00601790 void operator delete(void* p) 00601790 test2 void* operator new(size_t size, const int foo) 4 33 00601790 void operator delete(void *p, const int foo) 00601790 44 test3 void* operator new(size_t size, const char* bar) 4 hello 00601790 void operator delete(void *p, const char* bar) 00601790 world