我完全被这个错误迷惑了,我希望你能帮助我!我有一个具有结构向量的类(该结构称为粒子)。我只是在编写一个 getter,它返回结构中某个字段的向量;一次用于名为 x 的字段,然后再次用于名为 v 的字段:
vector<double> x = s.getx();
vector<double> v = s.getv();
出于某种原因,getx 有效,但 getv 无效:它给了我“malloc():内存损坏:”。
下面是 getx 和 getv 类:
vector<double> getx() {
vector<double> ret(number-2);
for(int i = 1; i < number; i++) {
ret[i-1] = masses[i].x;
}
return ret;
}
vector<double> getv() {
vector<double> ret(number-2);
for(int i = 1; i < number; i++) {
ret[i-1] = masses[i].v;
}
return ret;
}
错误发生在这一行:
vector<double> ret(number-2);
在格特夫。
我很困惑的原因是这两种方法本质上是相同的!当我用常数(例如 4)替换 (number-2) 时,我什至得到同样的错误。它根本无法分配内存!
我希望你能看到我做错了什么......
非常感谢您的帮助,祝您好运,夜光