gpt4 book ai didi

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

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

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

是否有进入 RTTI 的后门使之成为可能?

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

最佳答案

RTTI 可能帮不了你。 RTTI 仅在类具有虚方法时有效,并且并非所有分配都是对具有虚方法的对象。

您真正需要做的是想办法将堆栈跟踪附加到您的分配。然后您可以获得有关内存分配位置的信息。如果泄漏内存的是对象,您会寻找类构造函数。

不管怎样,那里有这样的东西吗?是的。 Windows 的免费图书馆是 Visual Leak Detector .有更多功能齐全的商业产品(如 Bounds Checker 和 IBM 的 Rational Purify),但 VLD 工作得很好。它无数次帮助我发现内存泄漏。

关于c++ - 在 C++ 中查找未知对象的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/352066/

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