c++在向量类中调试中断

c++ Debugging break in vector class

本文关键字:调试 中断 向量 c++      更新时间:2023-10-16

我试图运行我的.exe,但应用程序正在崩溃

调试后,我在向量类中得到了以下中断。它在这里中断->Orphan_all。

ExploringSfMExec.exe中0x0562DF58(msvcp120d.dll)处出现未处理的异常:0xC0000005:读取位置0xCDCDD1时发生访问冲突。

void clear() _NOEXCEPT
    {   // erase all
    this->_Orphan_all();
    _Destroy(this->_Myfirst, this->_Mylast);
    this->_Mylast = this->_Myfirst;
    }

有什么想法吗?

感谢

在路上的某个地方,您创建了一个非法的std::vector指针。

以下最小程序将重现问题:

#include <vector>
int main()
{
    std::vector<int>* v;
    v->clear(); // will cause access violation in MSVC
}

v->clear()会产生未定义的行为,而MSVC会将这种未定义行为转化为您正在经历的事情。

这就是我们通过您提供给我们的错误描述所能告诉您的全部内容。由于您已经在使用调试器,请追溯对clear的调用,直到找到非法指针。