Also note that switch_event_fire() will internally free the event once the 
handlers have processed it.

Mathieu Rene
Avant-Garde Solutions Inc
Office: + 1 (514) 664-1044 x100
Cell: +1 (514) 664-1044 x200
mr...@avgs.ca




On 2010-06-29, at 3:00 PM, Anthony Minessale wrote:

> This is mostly true
> minor corrections below:
> 
> most functions who return an opaque pointer with no sign of a session or pool 
> are expected to be destroyed.
> The rule of thumb is if they take an double pointer or return a pointer to 
> something opaque or a string it's a safe assumption it needs to be destroyed 
> either by looking for a corresponding destroy function or regular 
> switch_safe_free on strings.
> 
> 
> On Tue, Jun 29, 2010 at 8:36 AM, Steven Ayre <stevea...@gmail.com> wrote:
> memory free is sometimes used, but often not needed because of memory pools.
> 
> Sessions and channels have their own memory pool, anything creating memory 
> for one of them will not need freeing as when the session ends the entire 
> pool is destroyed. Similarly many modules have a pool which lasts for the 
> lifetime of the module.
> 
> There are other functions which will need freeing though... I suggest that 
> you use switch_safe_free() to be consistent with the rest of freeswitch. It's 
> just a wrapper on free which doesn't call it for a null pointer (avoiding a 
> segfault on some systems).
> 
> Some examples:
> - switch_snprintf & switch_mprintf needs a free (is given no pool or object 
> with a pool)
>      switch_snprintf does not need free it takes a buffer and memory size as 
> args like real snprintf
>  
> - switch_core_session_sprintf does not need a free (it's given a session, 
> memory is allocated from its pool)
> - switch_channel_expand_variables sometimes needs free, sometimes doesn't 
> (you give it a buffer, if it's large enough its used and returned otherwise 
> it creates a new one, so you should check the return value against the buffer 
> to avoid either freeing a const char or a buffer twice).
> 
> switch_channel_expand_variables only uses dynamic memory if something was 
> expanded in the string.  If it does not expand anything it returns the 
> original input pointer so you can tell if you need to free it if the output 
> != input string.
> 
> 
> 
>  
> -Steve
> 
> 
> On 29 June 2010 06:19, Paul Li <plite2...@gmail.com> wrote:
> A lot of FreeSwitch core APIs, such as switch_event_dup(switch_event_t
> **event, switch_event_t *todup), returns a pointer to an allocated
> memory chunk, should the caller always releases that memory chunk by
> calling a proper API, such as switch_event_destroy(switch_event_t
> **event)?
> 
> I could not find any documentation to detail the general rule
> regarding memory allocation/free when using the core APIs.
> 
> Thank you for your attention!
> 
> _______________________________________________
> FreeSWITCH-dev mailing list
> FreeSWITCH-dev@lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev
> http://www.freeswitch.org
> 
> 
> _______________________________________________
> FreeSWITCH-dev mailing list
> FreeSWITCH-dev@lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev
> http://www.freeswitch.org
> 
> 
> 
> 
> -- 
> Anthony Minessale II
> 
> FreeSWITCH http://www.freeswitch.org/
> ClueCon http://www.cluecon.com/
> Twitter: http://twitter.com/FreeSWITCH_wire
> 
> AIM: anthm
> MSN:anthony_miness...@hotmail.com
> GTALK/JABBER/PAYPAL:anthony.miness...@gmail.com
> IRC: irc.freenode.net #freeswitch
> 
> FreeSWITCH Developer Conference
> sip:8...@conference.freeswitch.org
> googletalk:conf+...@conference.freeswitch.org
> pstn:+19193869900
> _______________________________________________
> FreeSWITCH-dev mailing list
> FreeSWITCH-dev@lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev
> http://www.freeswitch.org

_______________________________________________
FreeSWITCH-dev mailing list
FreeSWITCH-dev@lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev
http://www.freeswitch.org

Reply via email to