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

标签 c++ memory memory-management new-operator

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

相关文章:

c++ - 并行计算内存访问瓶颈

c++ - 完成 vector 后是否需要调用 clear() ?

ios - 使用 ARC 进行内存分配 - 没有泄漏,但会慢慢堆积内存

c++ - 用于选择每个空格的正则表达式

c - 使用/dev/kmem 从内核读取地址值

c++ - 在 unsigned long long 上编译时间模板化 C++ 计算? double ?

php内存限制垃圾收集器

c - 重新分配后如何将新内存清零

c++ - 在 C++11 中使用 "auto"推导出的 lambda 类型是什么?

c++ - 为什么每次执行时函数的地址都不同?