覆寫C++的new與delete

#include <iostream>
#include <memory.h>
#include <stdlib.h>

using namespace std;

void* operator new(size_t num)
{
cout << "I'm operator new, i got num=" << num << endl;
return malloc(num);
}

void* operator new[](size_t num)
{
cout << "I'm operator new[], i got num=" << num << endl;
return malloc(num);
}

void operator delete(void* addr)
{
cout << "I'm operator delete, i got addr=0x" << hex << (long long)addr << endl;
return free(addr);
}

void operator delete[](void* addr)
{
cout << "I'm operator delete[], i got addr=0x" << hex << (long long)addr << endl;
return free(addr);
}

int main()
{
int* a = new int[10];
delete[] a;
return 0;
}

留言