C-将分配函数导出到子例程中,导致分割故障



我有一个需要结构指针的设备,将其传递到这样的分配函数:

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); 
}

但是,这样做会产生分割故障。我是做错了什么,还是可能对提供给我的分配函数固有的?

我做错了什么,

是。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); 
}

请确保启用所有编译器警告以节省您的时间。

最新更新