Takashi Iwai wrote:

> At Mon, 06 May 2002 12:09:57 +0200,
> Peter Enderborg wrote:
> >
> > Takashi Iwai wrote:
> >
> > > Hi Peter,
> > >
> > > At Sun, 05 May 2002 19:35:04 +0200,
> > > Peter Enderborg wrote:
> > > >
> > > > I have some memory problems with my alsa programming.
> > > > And I have tryed to do a small program to see whats wrong.
> > > > And I still have the same problem with this little program...
> > > >
> > > >
> > > > #include <alsa/asoundlib.h>
> > > > int main()
> > > > {
> > > >   while (1)
> > > >     {
> > > >       snd_seq_event_t *foo;
> > > >       foo = snd_seq_create_event();
> > > >       snd_seq_free_event(foo);
> > > >     }
> > > >   return 0;
> > > > }
> > > >
> > > > I guess that I have missed some fundamental things about the events.
> > > > This on cvs version from 20020504
> > >
> > > err..  please avoid using snd_seq_create_event(), or free the pointer
> > > by normal free() call.  snd_seq_free_event() doesn't free the
> > > malloc'ed pointer on alsa 0.9.
> > >
> >
> > What is the correct way to create an event then?
>
> the event struct is explicitly defined and its size is constant unlike
> other structs in API.   thus you can use any allocator as you like,
> such as malloc, etc.  if the event can be temporary, use it as a
> normal type simply like this:
>
> {
>         snd_seq_event_t ev;
>         snd_seq_ev_clear(&ev);
>         ...
>         snd_seq_event_output(handle, &ev);
> }
>
> snd_seq_event_output() copies the event instance, so a temporary
> variable can be used safely in the above.
>
> Takashi

Then we should remove theh free operation as well, so we get symetric API.

--
foo!




_______________________________________________________________

Have big pipes? SourceForge.net is looking for download mirrors. We supply
the hardware. You get the recognition. Email Us: [EMAIL PROTECTED]
_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel

Reply via email to