当前位置:  开发笔记 > 编程语言 > 正文

在C++中查找未知对象的类型

如何解决《在C++中查找未知对象的类型》经验,为你挑选了2个好方法。

检查程序是否存在内存泄漏的方法有很多种.你最终得到了泄漏内存块的指针列表,但有没有一种很好的方法可以找到每个块的更多信息?例如:如果我知道对象是一个字符串,实际的字符串值可以使泄漏更容易找到.

是否存在使RTTI成为可能的后门?

要解决的问题是,当你得到指针时,运行时系统已处于关闭状态,你得到原始内存块指针而不是指向对象的指针(尽管在很多情况下可能是相同的).



1> Kevin..:

RTTI可能对您没有帮助.RTTI仅在类具有虚方法时才有效,并且并非所有分配都是具有虚方法的对象.

您真正需要做的是有一些方法将堆栈跟踪附加到您的分配.然后,您可以获取有关内存分配位置的信息.如果它是泄漏内存的对象,你会寻找一个类构造函数.

无论如何,那里有这样的东西吗?是.适用于Windows的免费库是Visual Leak Detector.有更多功能齐全的商业产品(如Bounds Checker和IBM的Rational Purify),但VLD效果很好.它帮助我无数次发现内存泄漏.



2> Norman Ramse..:

我使用valgrind --leak-check = full,这将给我一个每个泄漏块的分配站点堆栈跟踪.此信息的方式更为有用的不仅仅是类型信息. valgrind(发音像"Val grinned")岩石!

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有