我有一个需要结构指针的设备,将其传递到这样的分配函数:
int main(){
snd_pcm_hw_params_t* params;
snd_pcm_hw_params_alloca(¶ms);
}
我想将它们的分配功能包裹在自己的功能中:
int main(){
snd_pcm_hw_params_t* params;
init_device*(¶ms);
}
void init_device(snd_pcm_hw_params_t** params){
snd_pcm_hw_params_alloca(params);
}
但是,这样做会产生分割故障。我是做错了什么,还是可能对提供给我的分配函数固有的?
我做错了什么,
是。init_device*(¶ms);
看起来代码正在使用函数地址init_device
并将其乘以params
的地址。然后扔产品。函数init_device()
未调用。
按照@yano的建议删除*
和简单调用
init_device(¶ms);
在调用它们之前还要声明/定义函数。
void init_device(snd_pcm_hw_params_t** params);
int main(){
snd_pcm_hw_params_t* params;
init_device(¶ms);
}
请确保启用所有编译器警告以节省您的时间。