我试图将值覆盖到向量中:
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
声明的数组都是可能的目标。