将分配函数导出到子程序导致分段错误。

时间:2018-02-20 22:05:30

标签: c pointers

我有一个设备需要将结构指针传递给分配函数,如:

int main(){
  snd_pcm_hw_params_t* params; 

  snd_pcm_hw_params_alloca(&params); 
}

我想将他们的分配函数包装到我自己的函数中,如下所示:

int main(){
  snd_pcm_hw_params_t* params; 

  init_device*(&params); 
}

void init_device(snd_pcm_hw_params_t** params){
  snd_pcm_hw_params_alloca(params); 
}

然而,这样做会产生分段错误。我做错了什么,或者它可能是提供给我的分配功能所固有的?

1 个答案:

答案 0 :(得分:2)

  

我做错了什么,

是。 init_device*(&params);看起来代码正在使用函数地址init_device并将其乘以params的地址。然后折腾产品。函数init_device()未被调用。

@yano

的建议移除*和简单通话
init_device(&params);

在调用函数之前声明/定义函数。

void init_device(snd_pcm_hw_params_t** params);

int main(){
  snd_pcm_hw_params_t* params; 
  init_device(&params); 
}

请务必启用所有编译器警告以节省时间。