gpt4 book ai didi

c++ - 在C++中查找单个类的内存使用情况

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:31:21 27 4
gpt4 key购买 nike

我有一个类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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com