您可以告诉C 中的运行时函数是否为纯虚拟
Can you tell if a function is pure virtual at runtime in c++
我有一个非常零星的错误,在运行时,虚拟函数看起来已成为"纯"。它必须是一些记忆损坏,显然该对象尚未被破坏,但可能已被覆盖在某个地方。
调试器将虚拟函数中的一个指针之一显示为null。
问题是,您可以在运行时告诉函数是否== null?
&(object->function)==NULL
正在给出编译错误"对绑定成员函数表达式的非法操作"
编辑:有了那个句子,我想做的就是在崩溃点之前的运行时进行一些检查,以查看我是否可以拦截情况(功能地址为0x00000000)。显示代码的时间可能会有点长,因为具有有问题功能的对象可能已经大约在一段时间内完成了许多过程,因此我不希望解决实际问题的解决方案。我只是想知道我是否可以进行一些测试以尽早检测腐败(虫子是偶然的)
呼叫纯虚拟函数,如果您在派生类(实现虚拟函数的一个)或破坏后调用虚拟函数(实现虚拟函数的一个)。正式地,这也会导致不确定的行为。您也许可以在混凝土派生的类'ctor中添加一个标志并在DTOR中重置,然后检查该标志,这是一个丑陋的黑客。您也可以使用typeid
检查类型,但是该方法更复杂,因此更有可能引起其他问题。
一个建议:您应该系统地确保将来不会发生此类问题。有时,一个保证正确代码的小弯路值得!
相关文章:
- 如何用参数值调用函数(仅在运行时已知)
- 函数在Windows或Linux上运行时表现不同
- 在运行时解析函数,而不是在编译C++解析函数
- 如何在 constexpr 函数中实现回退运行时
- 扩展类中的可选 vir 函数,测试它在运行时是否存在
- "main"函数堆栈中的对象在第一个任务运行时被覆盖 (FreeRTOS)
- 运行时的动态函数解析
- 字符串函数在目标C++上运行时C++返回空
- 为什么在尝试测量函数返回所需的时间时,我的运行时编号是错误的?
- 这个递归函数有什么作用?运行时的复杂性是多少?
- 如何在函数运行时逐个显示列表项
- 在函数运行时停止 Wt C++函数
- C 构造函数运行时/编译时间
- 是否可以在析构函数运行时不销毁 obj
- 参数的可变数量函数运行时错误
- 具有变量参数的函数运行时错误
- C++析构函数运行时错误:无法munmap
- 如何在 MEX 函数运行时制作它 printf?
- C++回调函数运行时错误
- 类型缺失的模板函数(运行时未使用)函数