在调试程序的核心转储之一时,遇到了多态的包含对象失去其VPTr的情况,我可以看到它指向NULL。
当一个对象丢失其VPTr时可能出现的情况。
提前致谢, Brijesh
答案 0 :(得分:6)
内存已被删除,即某些东西覆盖了内存。
您通过调用delete或直接调用析构函数来销毁它。这通常不会使vptr无效,它最终会指向基类的vtable,但这取决于您的实现。
最有可能的情况1.如果您的调试器具有内存断点并且您可以可靠地重现该问题,请在vptr上设置内存断点并查看正在修改它的内容。
答案 1 :(得分:5)
可能有些东西覆盖了整个对象。像这样:
memset( object, 0, sizeof( *object ) );
在使用vptr。
的对象上使用之前一切正常答案 2 :(得分:0)
可能是您在对象的析构函数中尝试使用v表。目前无法使用v表。