麻烦大家帮助看看重载new和delete时出现的问题
本人重载了全局的new delete操作符,linux平台,gcc编译器
不知道为什么 new 被调用了,而 delete 没有被调用,郁闷啊
void* operator new(size_t size, const char *file, int line);
void* operator new[](size_t size, const char *file, int line);
void* operator new(size_t size);
void* operator new[](size_t size);
void* operator new(size_t size, const std::nothrow_t&);
void* operator new[](size_t size, const std::nothrow_t&);
void operator delete(void *p) throw();
void operator delete(void *p, const char *file, int line);
void operator delete[](void* p) throw();
void operator delete[](void* p, const char *file, int line);
void operator delete(void*, const std::nothrow_t&) throw();
void operator delete[](void*, const std::nothrow_t&) throw();
补上
上而非加上
void* operator new(size_t size, const char *file, int line);
void* operator new[](size_t size, const char *file, int line);
被调用了,用来跟踪内存分配的,其他的也没用调用,
delete调用的是库自带的,而不是我写的,晕啊,第一次重载操作符,大家帮忙啊
[解决办法]
把throw()去掉试试?
[解决办法]
贴一下,调用New和Delete的代码
[解决办法]
1.#include<new>
2.重载的版本不要放到一个命名空间。
如果再不行的话,new一段很大的内存使其抛出异常看看调用的是哪个delete