passing a vector pointer to a function causes segfault
I am passing a vector pointer to another fu开发者_运维技巧nction which pushes data using that pointer:
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);
}
The push_back causes segfault.
If you call bar without a parameter, then vp will be NULL. Then foo is passed a NULL pointer and thus, this instruction vp->push_back will generate the segmentation fault.
If it hurts, don't do it. You should almost never pass things like vectors using pointers - use references instead:
void foo(vector<pair<int,int>> & vp){
vp.push_back(pair<int,int>(1,1));
}
I'm guessing your vector is NULL ... you'll want to add a check in foo.
void foo(vector<pair<int,int>> * vp)
{
if (vp != NULL)
vp->push_back(pair<int,int>(1,1));
}
Also prefer use of nullptr if you have C++0x support in your compiler.
加载中,请稍侯......
精彩评论