将向量指针传递给函数会导致段错误

bad*_*ash 0 c++ pointers vector segmentation-fault

我正在向另一个使用该指针推送数据的函数传递一个向量指针:

void foo(vector<pair<int,int>> * vp){
 vp->push_back(pair<int,int>(1,1)); //causes segfault
}

void bar(vector<pair<int,int>> *vp = NULL){
  foo(vp);
}
Run Code Online (Sandbox Code Playgroud)

push_back会导致段错误.

Mar*_*ila 5

如果你bar没有参数调用,那么vp就是NULL.然后foo传递NULL指针,因此,该指令vp->push_back将产生分段错误.