我试图将值覆盖到向量中:

  for (i = 0; i < 50; i++)
  {
        LJ.clear();
        LJ.reserve(210);

        //Calculate Lennard-Jones potential of every pair
        for(itr = 0; itr < 210; itr++)
        {
            term1 = pow(r[itr], 12);
            term1 = 1/term1;
            term2 = pow(r[itr], 6);
            term2 = 2/term2;
            LJ.push_back(term1 - term2);
        }

        //Calculate the initial Energy in the system Ei
        Ei = accumulate(LJ.begin(), LJ.end(), 0.0);
        Ei = Ei/2;
        cout << Ei << endl;
    }


但是,每当我两次遇到循环时,向量的容量都会得到一些垃圾值,并且当我尝试将项目推入时,会出现分段错误……如果我离开我们的备用部分,我仍然会得到段故障

最佳答案

但是,每当我两次遇到循环时,向量的容量都会得到一些垃圾值[...]


这是内存损坏的明确指示。

您可能在堆栈上有一个数组,并且正在覆盖超出数组限制的堆栈,从而“踩”矢量的脚趾。不幸的是,更接近LJ声明的数组都是可能的目标。

08-20 02:16