我有以下for循环:
// There is a typedef prior: uint32_t bmd2_uint32;
1. bmd2_uint32 momentIndex(0);
2. for (int t = 0; t < numMoms; ++t) {
3. bmd2_float64 momentR;
4. bmd2_float32 * dataR = new bmd2_float32[numSegs * numVars];
5. bmd2getnthframe(handle, momentIndex, &momentR, dataR, error);
6. checkError(error);
7. for (int i = 0; i < numSegs * numVars; ++i) {
8. std::cout << dataR[i] << std::endl;
9. }
10. delete[] dataR;
11. ++momentIndex;
12. }
当我单步执行调试器时,它将继续执行第1-12行。然后我再做一步,然后再回到第1行并再次继续循环。这是调试器错误吗?问题是,第二次循环时,momentIndex为0。
答案 0 :(得分:0)
这种奇怪现象可能发生在几个场景中:
1:您的目标文件处于不一致状态;也许一个对象没有建成应该是。清理并重建
2:在编译器中打开了优化,编译器重新安排了一些代码以提高性能。解决方案是禁用优化。
在这种情况下,clean and rebuild
解决了这个问题。