这个循环来自于遍历一个已变为循环的双向链表。存在内存损坏的迹象,例如许多数据成员具有奇怪的值,如没有匹配的枚举项、0000FFFF以下的值或者链表本身被报告为超过3亿的大小,这不是正常的。
我从转储中得到的唯一其他信息是,套接字读取操作失败,没有读取到任何数据。这导致(现在是循环的)列表的遍历。
我有几个转储都卡在同一个无限循环中。 我尝试获取分配堆栈跟踪,但对于我尝试的所有地址,!heap -p -a都会给我“ReadMemory错误,地址为eeddccee,请使用`!address eeddccee'来检查地址的有效性。”。
目前,我正在尝试修复L4警告(除了我不知道哪些与此有关,我有一堆C4100、C4511、C4512,我不知道如何修复;我主要修复像C4244这样的简单问题)。 DebugDiag没有发现任何问题,除了在单个线程上给我一个“This thread is not fully resolved and may or may not be a problem. Further analysis of these threads may be required.”。
从我看到的情况来看,我的选择是修复更多警告、重新阅读代码直到有东西跳出来或者从这里学习新的东西。
这真的是内存损坏吗?为什么它每次都卡在同一个结构中? 我该如何找到原因?