|
|
1
2
我怀疑其他地方的代码中有缓冲区溢出。 另一个代码正在设法破坏发布代码正在使用的内存。
改变其他随机代码也会改变行为,因为它会改变事物的相对位置。 基本上,您需要查看大量代码或使用BoundsChecker之类的工具来查找错误。 专注于数组或任何原始指针数学。也可以使用删除的指针。 这样的bug如果写入到不会导致崩溃的地方,可能会隐藏很长时间。出于同样的原因,它们经常神秘地消失。 |
|
|
2
2
伙计们。在经历了许多痛苦和泪水之后。为了至少暂时修复它,我不得不按照大多数人建议的格式对代码进行一些修改,这在第一种情况下应该是这样的:
然而,这个bug仍然存在。这颗宝石修复了它:
|
|
|
3
1
您可能在代码中有其他一些未显示的情况,导致映射中填充了一些无效数据。
在调用之前尝试转储地图的内容
|
|
|
4
1
显然,任何东西都可能有bug,即使是VC编译器。因此,如果这段代码中有bug,可以用 #pragma 关闭优化。如果在那之后它仍然崩溃,那么代码中的其他东西正在破坏您的映射(然后您需要打开DrWatson以获取转储,这样您就可以在windbg中检查崩溃,并尝试找出它发生了什么)。
|
|
|
5
1
优化器确实会弄乱你的调试信息。这条线很有可能是
事实上
要诊断真正的问题,您可能希望将最后一条if语句分解为如下内容:
如果您得到“test1”的输出,那么您的迭代器有问题。如果您得到一个“test2”的输出,然后是一个崩溃,那么很明显,错误发生在后续代码中。如果既不打印“测试1”也不打印“测试2”,并且仍然在那里崩溃,那么就有问题了 真正地 |
|
|
6
1
似乎只有在x64版本中才会发生(完全优化)。我的STL映射被确认为空(size()==0),但这行代码没有检测到空映射,而是进入for循环:
|
|
|
7
0
当然,按照这种逻辑,你别无选择。。。你做的任何事都是一种变通方法。
|
|
|
8
0
我认为你的假设可能是错误的:崩溃发生在
成功地
选中的
|
|
|
9
0
为什么要使用访问userStatus。而foo与->? |