【发布时间】:2013-11-18 19:46:07
【问题描述】:
我正在编写一大段代码。作为我的主类构造函数的一部分,我声明了大量向量,它们在某一点或另一点被填充(全部用双精度数)。直到不久前,代码运行良好,但在我添加了一个进一步的双精度向量之后,一个完全不相关的变量(一个决定特定“运行”是否成功的变量)由于某种原因正在被更改。 我没有添加任何更改此成功变量的行,当我打印出它的值(成功运行导致变量为零)时,它每次都会变为一个大整数,但每次运行它都会给出不同的值。 我感觉我在内存分配方面做错了,但我不知道到底是什么! 欢迎任何建议, 干杯 杰克
更新
class MyClass {
std::vector <std::vector<HLV> > qChains;
std::vector <std::vector<HLV> > VertexChains;
std::vector <std::vector<double> > Virtuals;
std::vector <double> VProducts;
std::vector <double> QProducts;
std::vector <double> StrongCouplings;
int EventStatus
}
然后在“MyClass”的另一种方法中,我有一个快速的 if 循环检查事件是否正常:
if (GetEventStatus() != 0) cout << "ERROR!! " << GetEventStatus() << endl;
自从我添加关于 StrongCouplings 的行以来,状态一直在返回随机的大整数。 然而,我注意到,如果我在各个地方检查 EventStatus 的值时放置一系列打印语句,问题就会消失!
【问题讨论】:
-
至少给我们看一些代码
-
显示一些代码,任何代码。你改的代码是什么?以前是什么样子的。我们现在绝对没有什么可做的。
-
就像我说的代码远远超过 10k 行,并且分布在大量文件中。如果有帮助,我将添加类定义的摘录?
-
出于好奇,什么类型的“变量”接受添加的双精度向量?您是否将字段添加到结构或类?请告诉我们。 (另外,
HLV是什么?) PS - 我注意到一些分号丢失。 -
嗨 ebyrob 是的,我在一个类中添加了另一个向量
标签: c++ memory memory-management vector