【发布时间】:2011-08-17 18:32:26
【问题描述】:
我想知道在某个执行点分配的某些对象的确切实例数。主要是为了寻找可能的内存泄漏(我主要使用 RAII,几乎没有新的,但我仍然可以在添加新元素或类似的东西之前忘记向量上的 .clear())。 Ofc 我可以有一个
atomic<int> cntMyObject;
我 -- 在析构函数中,++ 在构造函数中增加,cpy 构造函数(我希望我涵盖了所有内容:))。 但这是每个班级的硬编码。在“发布”模式下禁用它并不简单。 那么有没有什么简单优雅的方法可以轻松禁用来统计对象实例呢?
【问题讨论】:
-
为什么不使用配置文件来查找内存泄漏?...
-
不是赋值运算符——它不会改变该类型现有对象的数量,只是改变其中一个对象的值。
-
尽管我发现添加全局对象计数器的想法很有趣,但我想说的是,对于消除内存错误的实际问题,通过 Valgrind 运行程序将是一个更平易近人的解决方案,还有更有意义的信息。
-
如果你认为像谷歌 HEAPPProfiler 这样的东西很好,但是一旦我搞砸了 STL 的东西(非线程安全更新)并且它没有检测到泄漏(它确实帮助我找到了它们,因为我注意到了圆圈重新加载相同的东西变得越来越大)。另外我不知道如何专注于 HeapProfiler 中的某些类,我只知道生成“整个程序内存使用”。
-
您准备好接受编译器特定的解决方案了吗?我可以提供一个非侵入式 gcc 并且 msvc 也有类似的功能。
标签: c++ refcounting