首页 > 解决方案 > 向量中向量的 push_back 导致 bad_alloc

问题描述

我正在处理一个大型项目,并且有一条类似于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;
}

有人有想法,我应该检查什么?

标签: c++bad-alloc

解决方案


推荐阅读