请问如何重载operator new
为了跟踪代码中内存分配(只考虑new和delete),环境VC6
发现new和new []、delete和delete []是调用的同一函数
成功重载后(方法有几种),效果很好。
但是,因为new会fail的原故(两种情况):
1. new char
则照standard c++是会throw bad_alloc,但VC6(未实现)返回point为NULL
2. new (nothrow) char
返回point为NULL
需要统一错误处理方法,考虑未来向VC7或其他compiler移植,则要求统一加上nothrow,此时问题出现:
可以重载nothrow版的new,但是使用老方法
#define new new(__FILE__, __LINE__)
却使得VC6视nothrow版的new不存在,会报char *p = new (nothrow) char;错误
请教版主及各位大虾,谢谢!!!