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不是也重载了吗??怎么还会出这个警告????求高手指点下。。。。
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不是也重载了吗??怎么还会出这个警告????求高手指点下。。。。
...全文
相关推荐
C++ new、delete(new[]、delete[])操作符重载需要注意的问题
主要介绍了C++ new、delete(new[]、delete[])操作符重载需要注意的问题,本文同时讲解了兼容默认的 new、delete 的错误处理方式、多态的问题等内容,需要的朋友可以参考下
重载new 用法例子
重载new ,夸dll库使用new delete ,vs2008工程
17~C++ new和delete运算符重载
重载 class A的new/delete 以及 new[]/delete[]运算符: 成功返回非空指针,失败返回空指针 #include #include using namespace std; class A { public: A (int var = 0) : m_var (var) { cout << A构造: << this << endl; } ~A (void) { cout << A析构: << this << endl; } static void* operator new (size_t size) { void* pv = malloc
source_delete_new.rar_hook delete_内存泄露_重载new
解决内存泄露的源代码,重载了NEW DELETE 函数,通过获取指针的钩子,截获内存泄露的元凶
c++(6)操作符重载
很不做的PPT


