我有一个 C++ 应用程序,我想为其实现基本的内存分析功能。
对于最重要和消耗内存的类,我在构造函数、复制构造函数和析构函数中包含了一些代码,用于计算和保存类的每个实例使用的内存量(代码仅在宏#MEMPROFILE 时运行已定义。类似于:
class MyClass
{
MyClass(){
#ifdef MEMPROFILE
calcAndSaveMemUsage();
#endif
}
...
}
类似地,析构函数相应地更新计数器。这样,无论何时定义用于分析的宏并创建一个新实例(如 MyClass obj
),都会自动处理内存消耗信息。
有没有办法自动对指针做类似的事情——一般情况下,或者那个特定类的指针?例如,每次创建指针时自动增加一个计数器?
我有兴趣了解更多有关实现该目标的方法,无论是重载、包装还是检测。
PS:我知道可以帮助我分析内存的外部工具。我有兴趣了解上面提到的那个特定问题。
最佳答案
不,那是不可能的。指针不是用户定义的类型。此外,它们可以被 memcpy
复制,这意味着编译器甚至可能不知道它正在复制它们。在幕后,std::copy
也可能在可能的情况下使用 memcpy
,因此不仅仅是对 memcpy
的显式调用会让您感到困惑。
关于c++ - 编程基本的应用程序内内存分析 : how to count pointers that are created?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42830340/