[alsa-devel] Scope of snd_pcm_hw_params_alloca() ?

Takashi Iwai tiwai at suse.de
Thu Mar 13 17:44:27 CET 2008


At Thu, 13 Mar 2008 16:21:51 +0000,
Alan Horstmann wrote:
> 
> I've spent a couple of days pining this down.
> 
> snd_pcm_hw_params_alloca() is part of the user API -right?  But accomplished 
> as a #define in pcm.h.

Because alloca can be used only with a macro due to its nature.

> However if it is called inside a function, and the pointer stored for future 
> use, after leaving the function the allocation seems to have gone, and 
> attempting thereafter to use the pointer to access the hwparams space in 
> another API function results in seg-fault.
> 
> This seems rather counter-intuitive (ie unexpected) to someone who has no 
> knowledge of the inner workings, but simply uses the API; the allocation 
> disappears without having been specifically free'd or released in any way.  I 
> know that calling it globally gets round the problem, but certainly I could 
> do without all the debug needed to discover that.

Well, alloca() is an (almost) standard stuff.
You had a good lecture for a bit more deep studying C :)


Takashi


More information about the Alsa-devel mailing list