【重载】重载new和new[]
RT大家谁这么做过,请给个例子。
另外欢迎就此问题展开讨论。
2013-10-27 22:28
2013-10-28 08:25
2013-10-28 08:42
2013-10-29 11:27

2013-10-29 12:15

程序代码:#include <iostream>
using namespace std;
struct foo
{
explicit foo( int val=0 ) : val_(val)
{
cout << "(" << val_ << ")";
}
~foo()
{
cout << "<" << val_ << ">";
}
int val_;
static void* operator new[]( size_t size ); // 类形式的new/delete
static void operator delete[]( void* raw );
};
char buf[1000];
void* foo::operator new[]( size_t size )
{
//如果不是本类的,而是派生类的,要明确拒绝之
// return ::operator new(size);
if( 0 == size ) // 须要注意
size = 1;
//分配size字节内存;
//if(分配成功)
// return 指向内存的指针;
return buf; // 我只是做个演示
throw std::bad_alloc();
}
void foo::operator delete[]( void* raw )
{
//如果不是本类的,而是派生类的,要明确拒绝之
//{
// ::operator delete(raw);
// return;
//}
if( 0 == raw ) // 须要注意
return;
// 释放分配的内存
// 我只是做个演示
}
int main()
{
delete[] new foo[2];
return 0;
}
2013-10-29 15:42
2013-10-30 07:01