尝试调用()时向量中出现c ++错误

时间:2017-01-26 13:26:14

标签: c++ vector

我试图获得指向vector(vector mytype*) mytype的指针,但我得到了段错误。 我有以下代码:

void add(string b, vector<mytype*> *p){
    int a;
    mytype *fre=NULL;
    a=oura.front();
    oura.pop();
    if(!(p->size()<a) && oura.size()>0){
        fre=p->at(a-1); //Error seems to come from here
        add(b,fre->get_vec());
    }
    else{ ...}
    }

mytype是一个带有stringvector<mytype*>指针的课程。

错误似乎来自fre=p->at(a-1)

ouraqueue<int>,取值介于1-20之间,因此我使用了(a-1)。

1 个答案:

答案 0 :(得分:2)

at在访问元素时会进行边界检查。如果它超出范围,它将抛出std::out_of_range例外。

添加assert(a > 0);应该可以让您知道它何时发生。