Visual Studio 2008中未处理的异常

时间:2011-06-11 15:36:21

标签: c++ visual-studio-2008

我用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

2 个答案:

答案 0 :(得分:2)

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

在调试模式下,内存中填充了0xcccccccc,以使其更加明显。

答案 1 :(得分:0)

通过分析代码进行故障排除将是一个真正的痛苦。其他人已经指出了一个很好的总体方向,但是如果你没有看到像未初始化指针那样明显的东西,那么它可能是某种内存损坏。

Enable full pageheap用于您的程序,然后再次在调试器中运行。如果不是在腐败点,它应该更早崩溃,这将为您提供更多信息。