new的重载问题
MemoryPool.h
class MemoryBlock
{
public:
unsigned short nsize;
unsigned short nfree;
unsigned short nfrist;
MemoryBlock *pNext;
char Data[1];
public:
MemoryBlock(unsigned short nNum,unsigned nUnitSize);
~MemoryBlock(){}
static void* operator new(size_t,unsigned short nNum,unsigned short nUnitSize)
{
return ::operator new(sizeof(MemoryBlock)+nNum*nUnitSize);
}
static void operator delete(void* p,size_t)
{
::operator delete(p);
}
};
这个类里重载了new和delete
调用new
MemoryBlock *temp=new(UnitSize,InitSize)MemoryBlock(UnitSize,InitSize);后
编译器出个警告:
warning C4291: “void *MemoryBlock::operator new(size_t,unsigned short,unsigned short)”: 未找到匹配的删除运算符;如果初始化引发异常,则不会释放内存
1> d:\code\c++\memorypool\memorypool\memorypool.h(16) : 参见“MemoryBlock::operator new”的声明
delete不是也重载了吗??怎么还会出这个警告????求高手指点下。。。。