snd_pcm_hw_params_alloca() 和 snd_pcm_hw_params_malloc() 有什么区别?
What is difference between snd_pcm_hw_params_alloca() and snd_pcm_hw_params_malloc()?
我看到一些使用 alsa api 的 capture/playback 代码。其中一些使用 snd_pcm_hw_params_malloc()
而另一些使用 snd_pcm_hw_params_alloca()
.
它们除了一个是函数,一个是宏之外还有什么区别。
snd_pcm_hw_params_alloca() 宏是否被 snd_pcm_hw_params_malloc() 替换?
snd_pcm_hw_params_alloca()
使用 alloca()
在堆栈上分配结构。这意味着它会在您的函数 returns.
时自动释放
snd_pcm_hw_params_malloc()
使用 malloc()
。您有责任在不再需要时调用 snd_pcm_hw_params_free()
。
我看到一些使用 alsa api 的 capture/playback 代码。其中一些使用 snd_pcm_hw_params_malloc()
而另一些使用 snd_pcm_hw_params_alloca()
.
它们除了一个是函数,一个是宏之外还有什么区别。 snd_pcm_hw_params_alloca() 宏是否被 snd_pcm_hw_params_malloc() 替换?
snd_pcm_hw_params_alloca()
使用 alloca()
在堆栈上分配结构。这意味着它会在您的函数 returns.
snd_pcm_hw_params_malloc()
使用 malloc()
。您有责任在不再需要时调用 snd_pcm_hw_params_free()
。