A
Alex Vinokur
Hi,
It seems that overloaded global delete is used instead of orignal
global delete[] in program below.
Any suggestions?
Thanks
// ===========================================
// File foo1.cpp
#include <memory>
#include <iostream>
#define SHOW_FUNC std::cout << "Line-" << __LINE__ << ": " <<
__PRETTY_FUNCTION__ << std::endl
// ---------------------------------
// Global delete
// ---------------------------------
void operator delete(void *i_p)
{
SHOW_FUNC; // Line-13
// Do something
free(i_p);
}
// ---------------------------------
struct Foo
{
};
// ====================
int main()
{
Foo* p = ::new Foo[2];
::delete [] p;
return 0;
}
// ===========================================
Linux
gcc version 4.1.2 20080704 (Red Hat 4.1.2-52)
Output
Line-13: void operator delete(void*) // So, overloaded global
delete is used instead of orignal global delete[] ?
It seems that overloaded global delete is used instead of orignal
global delete[] in program below.
Any suggestions?
Thanks
// ===========================================
// File foo1.cpp
#include <memory>
#include <iostream>
#define SHOW_FUNC std::cout << "Line-" << __LINE__ << ": " <<
__PRETTY_FUNCTION__ << std::endl
// ---------------------------------
// Global delete
// ---------------------------------
void operator delete(void *i_p)
{
SHOW_FUNC; // Line-13
// Do something
free(i_p);
}
// ---------------------------------
struct Foo
{
};
// ====================
int main()
{
Foo* p = ::new Foo[2];
::delete [] p;
return 0;
}
// ===========================================
Linux
gcc version 4.1.2 20080704 (Red Hat 4.1.2-52)
// No errorsg++ foo1.cpp
Output
Line-13: void operator delete(void*) // So, overloaded global
delete is used instead of orignal global delete[] ?