我用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
答案 0 :(得分:2)
值0xcccccc70看起来像程序使用未初始化指针的偏移量。
在调试模式下,内存中填充了0xcccccccc,以使其更加明显。
答案 1 :(得分:0)
通过分析代码进行故障排除将是一个真正的痛苦。其他人已经指出了一个很好的总体方向,但是如果你没有看到像未初始化指针那样明显的东西,那么它可能是某种内存损坏。
Enable full pageheap用于您的程序,然后再次在调试器中运行。如果不是在腐败点,它应该更早崩溃,这将为您提供更多信息。