3

我有一个分段错误。使用 gdb 调试,堆栈中的第一帧是

在 MyClass() 的类型信息中

有人知道 typeinfo 吗?

4

3 回答 3

4

有同样的问题;发布解决方案,因为它可能对其他人有帮助:

对项目进行干净的重建解决了这个问题——一些目标文件使用了不同版本的头文件,这导致了不一致。实际的错误在我的构建脚本中,因为依赖项没有正确表达。

于 2014-06-06T12:59:48.540 回答
2

我怀疑在这种情况下,作为框架顶部的 typeinfo 完全是一个红鲱鱼。您需要向上调用调用堆栈,直到找到自己的代码并在那时更详细地查看。几乎可以肯定,您正在尝试从空指针获取类型信息,但它有可能只是一个垃圾指针值(这不太明显)。

于 2011-03-18T15:51:33.187 回答
1

RTTI 仅适用于具有至少一个虚拟方法的类,因此请确保您有一个。

另外,请记住,您可以直接使用 RTTI(dynamic_cast、typeinfo、typeid)或间接使用(catch 是或可以根据 dynamic_cast 实现)。

于 2011-03-18T16:02:20.697 回答