前言
这可能是一个糟糕的问题,但我在这里真的没有希望。我知道我的问题很糟糕,因为它对我的问题非常具体,但我会尝试以最好和最普遍的方式描述问题......
一些背景
在我的代码中,我有一个名为bead
的数据结构,其中包含一个名为LID
的整数变量。我还有一个名为lipid
的数据结构,其中包含三个指向(三个不同的)bead
的指针。 lipid
s保存在名为vector<lipid*>
的{{1}}变量中,lipids
的{{1}}变量等于相应bead
的位置在LID
+1。
在我的(蒙特卡罗 - MC)模拟过程中,我选择0到999之间的随机数并更改相应的lipid
。然后,我使用名为lipids
的函数测试更改,该函数一次接受一个lipid
的{{1}}指针作为其输入(名为calcEnergy
)。
问题
在我选择lipid
位置编号261后,我收到了错误的分配错误。我试图找到为什么会发生这种情况,所以我输入了:
bead
当我尝试这个时,当程序选择mb
位置编号132时,模拟停止(分段错误)。所以,我试着看看为什么会这样,并在屏幕上打印lipids
我使用if(mb->LID ==261){
printf("something");
}
发送的每个lipids
。现在该程序在132 LID
中存活,并在下一个bead
上粉碎。
当我尝试读取一个我知道它有效的变量时,我对程序崩溃的原因绝对无能为力。
再一次,我知道这是一个很长的镜头,但我现在还有其他想法...
感谢。
答案 0 :(得分:0)
我猜想一个函数正在接受一个脂质*并覆盖它的一个珠子指针,所以稍后它会读取一个包含无效珠子数据的无效指针。
尝试编辑你的“计算能量”函数不做任何事情,只需接收指针并返回。看看是否能阻止这个bug。如果是,请一次添加一行代码,直到找到导致错误的行。