逐步执行代码时,前一行重复

问题描述 投票:0回答:2

在遍历我的代码时,我注意到当实例化一个新类时,代码后退一行,因此执行了两次。这是两行。

ST_GalacticObject GO = GalacticObjects-》Item [FIndex];
delete F; F = new ST_Facility (GO);

注意:GalacticObjects和称为FacilityClasses的相关对象(相同文件)都定义为extern。

c++ instantiation
2个回答
0
投票

创建和销毁对象时,生成的代码有很多隐藏的位。

编译器在创建该代码时为其分配了一些行号。执行代码后,调试器将突出显示该行。

一种常见的情况是调试器返回运行析构函数时在其上声明对象的行。

[优化代码时,情况变得更糟,因为您的代码不一定必须按顺序执行,并且您甚至可能会在评估各行的不同部分时看到行被多次执行。

您只需要相信编译器已经做了正确的事情并生成了正确的代码,而忽略了调试器告诉您的操作。


0
投票

这些类型的东西在调试优化的(零售)代码时很常见。

但是您可以做的最明显的改进是使调试器不会感到困惑,即不要将两个语句放在同一行上。也就是说,代替这个:

delete F; F = new ST_Facility (GO);

此:

delete F; 
F = new ST_Facility (GO);
© www.soinside.com 2019 - 2024. All rights reserved.