我完全被這個錯誤困惑,我希望你能幫助我! 我有一個類有一個結構向量(結構稱爲粒子)。我只是寫一個getter,它返回結構中某個字段的向量;一次,一個叫做X字段,然後再對場所謂的V:當聲明向量時神祕的malloc內存分配錯誤
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);
在getv時
。
我很困惑的原因是這兩種方法本質上是相同的!當我用一個常數替換(數字-2)時,我甚至會得到同樣的錯誤,例如, 4.它根本無法分配內存!
我希望你能看到我做了什麼錯?
非常感謝您的幫助, 最良好的祝願, NOCTILUX
矢量大小應該是'number-1',你只能得到一個錯誤。 – ipc
@ipc是對的。爲了消除錯誤的可能性,使用'push_back'而不是賦值。 –