我有一个类classX
,想知道这个类的所有实例使用了多少内存。每个新实例都是使用 new classX
有没有办法在不修改源代码的情况下做到这一点(即使用像 valgrind 这样的工具)?
以及我可以通过修改源代码使用什么方法来做到这一点(我不能修改每个实例的创建,但可以修改类本身)。
我能想到的唯一方法是重载 new 运算符(但我不知道如何从那里调用原来的 new 运算符)!
最佳答案
在类中重载 operator new()
非常容易。然后可以使用 ::
调用全局命名空间,以在 ::operator new()
中指定全局命名空间。像这样:
class ClassX {
public:
void* operator new( size_t size )
{
// whatever logging you want
return ::operator new( size );
}
void operator delete( void* ptr )
{
// whatever logging you want
::operator delete( ptr );
}
};
关于c++ - 在C++中查找单个类的内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8530489/