内存使用和c ++中的覆盖

时间:2013-11-18 19:46:07

标签: c++ memory memory-management vector

我正在处理大量代码。作为我的主类构造函数的一部分,我声明了大量的向量,这些向量在某一点或另一点被填充(都有双精度)。直到不久前,代码运行良好,但在我添加了另一个双精度矢量后,一个完全不相关的变量(一个决定特定'运行'是否成功的变量)由于某种原因正在改变。 我没有添加任何更改此成功变量的行,当我打印出它的值(成功运行导致变量为零)时,它每次都会变为一个大整数,但每次运行它都会给出不同的值。 我有一种感觉,我在做内存分配时出错了,但我不知道究竟是什么! 欢迎任何建议, 干杯 千斤顶

更新

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的值时放置一系列打印语句,问题就会消失!

1 个答案:

答案 0 :(得分:0)

尝试添加char buf [128];在更改其值的变量之前 - 如果它有帮助 - 它将意味着某个先前的变量会覆盖您的变量。这可能是由于ODR违规或错误使用C数组引起的(如果在数组结束后写入)