在遍历我的代码时,我注意到当实例化一个新类时,代码后退一行,因此执行了两次。这是两行。
ST_GalacticObject GO = GalacticObjects-》Item [FIndex];
delete F; F = new ST_Facility (GO);
注意:GalacticObjects和称为FacilityClasses的相关对象(相同文件)都定义为extern。
创建和销毁对象时,生成的代码有很多隐藏的位。
编译器在创建该代码时为其分配了一些行号。执行代码后,调试器将突出显示该行。
一种常见的情况是调试器返回运行析构函数时在其上声明对象的行。
[优化代码时,情况变得更糟,因为您的代码不一定必须按顺序执行,并且您甚至可能会在评估各行的不同部分时看到行被多次执行。
您只需要相信编译器已经做了正确的事情并生成了正确的代码,而忽略了调试器告诉您的操作。
这些类型的东西在调试优化的(零售)代码时很常见。
但是您可以做的最明显的改进是使调试器不会感到困惑,即不要将两个语句放在同一行上。也就是说,代替这个:
delete F; F = new ST_Facility (GO);
此:
delete F;
F = new ST_Facility (GO);