重载operator new/delete的问题
来源:百度知道 编辑:UC知道 时间:2024/07/02 18:46:30
VC6+XP
我现在在一个工程里需要做内存方面的管理,需要知道分配了哪些内存(地址和大小),所以希望能通过重载全局new/delete的方式实现,之所以是全局的,是因为有很多类,若对每个类都重载自己的new/delete,会很麻烦。我现在希望在原来全局new/delete的基础上多一些我的管理操作,不知道如何实现这种重载呢?
我想到了namespace的方法。
namespace T
{
void *operator new(std::size_t size)
{
void *tmp = operator new(size);
// do my job here
return tmp;
}
void operator delete(void *p)
{
// do my job here
delete p;
}
}
这样可以编译通过。但是若在程序中调用这个new,就不行了
using T::operator new;
int *a = new int;
这样仍然调用的是本身的new,而不是我在名称空间里的
针对这个,各位有什么好的方法吗?
我现在在一个工程里需要做内存方面的管理,需要知道分配了哪些内存(地址和大小),所以希望能通过重载全局new/delete的方式实现,之所以是全局的,是因为有很多类,若对每个类都重载自己的new/delete,会很麻烦。我现在希望在原来全局new/delete的基础上多一些我的管理操作,不知道如何实现这种重载呢?
我想到了namespace的方法。
namespace T
{
void *operator new(std::size_t size)
{
void *tmp = operator new(size);
// do my job here
return tmp;
}
void operator delete(void *p)
{
// do my job here
delete p;
}
}
这样可以编译通过。但是若在程序中调用这个new,就不行了
using T::operator new;
int *a = new int;
这样仍然调用的是本身的new,而不是我在名称空间里的
针对这个,各位有什么好的方法吗?
因为这个不是operator new
建议您看看new和operator new的区别
effective c++ 讲的很好
C++ primer也行
另外提醒一下 全局重载后很多库函数的适用可能会遇到奇怪的问题
C++重载operator new/delete
重载operator new/delete的问题
C++模板问题:重载operator<<
请问 operator 在C++是是什么观键字呀?除了重载以外
运算符重载的问题:int operator+();与int &operator+();有什么区别?
C++ 中如何重载new ,delete ???
举例说明怎样重载-> ->* new[] delete[]
C++运算符重载:complex operator+(complex c2); //+重载为成员函数;;C2参数是哪里传来的
为什么C++操作符<<重载老是提示:operator <<' is ambiguous
C++中定义一个字符串类string,并实现减运算符重载operator-