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

问题描述

| 我将向量指针传递给另一个函数,该函数使用该指针推送数据:
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);
}
push_back导致段错误。     

解决方法

        如果很痛,请不要这样做。您几乎应该永远不要使用指针传递矢量之类的东西-而是使用引用:
void foo(vector<pair<int,int>> & vp){
 vp.push_back(pair<int,int>(1,1));
}
    ,        如果不带参数调用call2ѭ,则vp将为
NULL
。然后
foo
被传递一个
NULL
指针,因此,该指令
vp->push_back
将产生分段错误。     ,        我猜您的向量为NULL ...您将要在foo中添加一个检查。
void foo(vector<pair<int,int>> * vp)
{
    if (vp != NULL)
        vp->push_back(pair<int,1));
}
如果您的编译器具有C ++ 0x支持,也最好使用
nullptr
。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...