我有一个包含std::列表的自定义结构。但是,在调试模式下(release正在工作),应用程序在多次调用clear with后会崩溃
0xC 0000005:访问冲突阅读位置0xFFFFFFFFFFFF。
内部库方法void _Orphan_non_end() noexcept { // orphan iterators except end()
和变量_Iterator_base12** _Pnextnext = &(*_Pnext)->_Mynextiter
;是0xdddddddddddddde5
。
我无法找到问题所在,也无法创建一个会崩溃的最小工作示例,所以我猜问题出在其他地方(堆损坏?))在程序中。我尝试运行“应用程序验证程序”,但没有运气。如何找到问题的根源?
我正在使用Visual Studio 2022,Windows应用程序,x64模式
1条答案
按热度按时间jtoj6r0c1#
看来我找到问题了。
该结构继承自未声明为
virtual
的析构函数的父级。添加virtual
到父母的dtor修复了这个问题。