繁体   English   中英

C ++中的内存使用情况和覆盖

[英]Memory usage and overwrites in c++

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

更新

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

尝试添加char buf [128]; 在更改其值的变量之前(如果有帮助),则表示先前的某些变量会覆盖您的变量。 这可能是由于违反ODR或对C数组的错误使用引起的(如果在数组末尾之后写入)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM