我用C++编写了程序。我使用“cout”进行调试。一切正常,我删除了调试注释,但是运行程序有问题。当我使用评论时,一切正常。但是,当我删除它们时,程序会启动,允许我写文件名,但是当我按“Enter”键时,会发生错误:

在Pathfinder.exe中0x0142d866处未处理的异常:0xC0000005:访问冲突读取位置0xcccccc70

并打开 xiosbase 头文件,指示

fmtflags __CLR_OR_THIS_CALL flags() const
{   // return format flags
    return (_Fmtfl);
}

当我尝试将元素放入Map中时发生错误。仅当在其他函数中删除了调试注释时,才会发生这种情况。
有人可以帮忙吗?
-this 0xcccccc6c {_Stdstr=??? _Mystate=??? _Except=??? ...} const std::ios_base * const
    std::_Iosb<int> {...}   std::_Iosb<int>
    __vfptr CXX0030: Error: expression cannot be evaluated
    _Stdstr CXX0030: Error: expression cannot be evaluated
    _Mystate CXX0030: Error: expression cannot be evaluated
    _Except CXX0030: Error: expression cannot be evaluated
    _Fmtfl  CXX0030: Error: expression cannot be evaluated
    _Prec   CXX0030: Error: expression cannot be evaluated
    _Wide   CXX0030: Error: expression cannot be evaluated
    _Arr    CXX0017: Error: symbol "" not found
    _Calls  CXX0017: Error: symbol "" not found
    _Ploc   CXX0017: Error: symbol "" not found
    _Index  0   int
    _Sync   true    bool

最佳答案

值0xcccccc70看起来程序使用了一个未初始化指针的偏移量。

在 Debug模式下,内存中填充有0xcccccccc,以使其更明显。

10-07 13:37