Re: Big Problem! How to overload operator delete?
I've never tried to do this, but maybe one of these articles will help:
http://www.codeproject.com/debug/newdel.asp
http://www.codeproject.com/cpp/memmgment.asp
http://msdn2.microsoft.com/en-us/library/sab9y331.aspx
Tom
"Lighter" <cqulyx@gmail.com> wrote in message
news:1155175201.684448.132180@i42g2000cwa.googlegroups.com...
Big Problem! How to overload operator delete?
According to C++ standard, "A deallocation function can have more than
one parameter."(see 3.7.3.2); however, I don't know how to use an
overloaded delete operator. Let me use an example to illustrate this:
/********************************************************/
#include <new>
#include <iostream>
using namespace std;
void operator delete(void* p, const nothrow_t&)
{
cout << "Hello" << endl;
} // (1)
void operator delete(void* p, int a, int b)
{
cout << "World" << endl;
} // (2)
int main()
{
int* p = new(nothrow) int;
delete p; // This cannot render to show 'Hello' or 'World'
}
/********************************************************/
Even if I use 'delete(nothrow, p);', it cannot render to show 'Hello'
or 'World' either. My problem just lies here: Although I can write my
own operator delete, I cannot use it. As far as I know, the C++
standard doesn't give an example to illustrate the usage of delete (The
usage of new is given.).
An ugly way to do this is to use function call:
operator delete(nothrow, p); // This can render to show 'Hello'
However, I don't think this is the answer to my question. Who know the
correct one?
Any help will be appreciatied. Thanks in advance.