new的重载问题

zbzjy2008 zbzjy2008 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
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不是也重载了吗??怎么还会出这个警告????求高手指点下。。。。
...全文

相关推荐

评论 6
收藏 已收藏
分享
返回顶部
zbzjy2008
C++ 语言 65,214 成员 250,514 内容