push_back из вектора в вектор вызывает bad_alloc - PullRequest
0 голосов
/ 01 апреля 2019

Я работаю над большим проектом, и строка, похожая на newVec.push_back(vec[i]);, вызывает ошибку terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc.

Однако я могу не воспроизвести ошибку в свернутом примере, но код выглядит примерно так:

#include<vector>
#include<iostream>

using namespace std;

class MyClass {
    public:
    vector<int> vec{1,2,3};
};

class MyClassTwo {
    public:
    vector<int> vec;
};

vector<int> doSometing(const vector<int> vec) {
        vector<int> newVec;
        for(int i = 0; i < vec.size(); i++) {
            newVec.push_back(vec[i]); //causes: terminate called after throwing an instance of 'std::bad_alloc' what():  std::bad_alloc
        }
        return newVec;
    }

int main() {
    MyClass c;
    MyClassTwo cTwo;

    cTwo.vec = doSometing(c.vec);

    cout << cTwo.vec[0] << endl;
}

У кого-то есть идея, что я должен проверить?

...