You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-user@axis.apache.org by Subra A Narayanan <as...@gmail.com> on 2007/08/20 02:11:08 UTC

Memory management in Axis2/C

Hello everyone,

I had some very basic questions about memory management in Axis2/C and hope
I can clarify my doubts with your help. I did go through the article on
memory management => http://wso2.org/library/237 but still have some
questions.

1. I am working on a new webservice for which I just copied the 'math'
service from the samples and have been just modifying it. In the 'add'
operation of the 'math' service, there are some calls to
axiom_element_get_text function which returns a const axis2_char_t* to
retrieve the parameters from the soap xml document. Who is responsible for
freeing up this memory? I assume since its const pointer and I didnt
explicitly allocate memory, it will be clened up by the framework. But when
does this happen? I looked at the math_free function in math_skeleton.c file
but it doesn't tell me much. Is this when the clean up happens?

 int AXIS2_CALL
math_free(axis2_svc_skeleton_t *svc_skeleton,
        const axutil_env_t *env)
{
    if (svc_skeleton)
    {
        AXIS2_FREE(env->allocator, svc_skeleton);
        svc_skeleton = NULL;
    }
    return AXIS2_SUCCESS;
}



2. Is there any advantage in using the AXIS2_MALLOC over jus malloc? From my
understanding, AXIS2_MALLOC just hides the env specific implementation of
memory allocation. So if I am using 'C' either malloc or AXIS2_MALLOC are
one and the same. Am I correct? On a similar note, is there any advantage in
using axis2_char_t* over just char*?


I thank all of you for ur help and patience as I try to understand the Axis2
framework.

Subra

Re: Memory management in Axis2/C

Posted by Manjula Peiris <ma...@wso2.com>.
Hi Subra,

Please see my comments inline.

On Sun, 2007-08-19 at 20:11 -0400, Subra A Narayanan wrote:
> Hello everyone,
> 
> I had some very basic questions about memory management in Axis2/C and
> hope I can clarify my doubts with your help. I did go through the
> article on memory management => http://wso2.org/library/237 but still
> have some questions.
> 
> 1. I am working on a new webservice for which I just copied the 'math'
> service from the samples and have been just modifying it. In the 'add'
> operation of the 'math' service, there are some calls to
> axiom_element_get_text function which returns a const axis2_char_t* to
> retrieve the parameters from the soap xml document. Who is responsible
> for freeing up this memory? I assume since its const pointer and I
> didnt explicitly allocate memory, it will be clened up by the
> framework. But when does this happen? I looked at the math_free
> function in math_skeleton.c file but it doesn't tell me much. Is this
> when the clean up happens?
> 
> int AXIS2_CALL
> math_free(axis2_svc_skeleton_t *svc_skeleton,
>         const axutil_env_t *env)
> 
> {
>     if (svc_skeleton)
>     {
>         AXIS2_FREE(env->allocator, svc_skeleton);
>         svc_skeleton = NULL;
>     }
>     return AXIS2_SUCCESS;
> }
Those will be freed from the framework when the corresponding om_tree is
freed for the soap xml document. But if you duplicate the text value
using axutil_strdup you need to free it by your own.


> 
> 
> 2. Is there any advantage in using the AXIS2_MALLOC over jus malloc?
> From my understanding, AXIS2_MALLOC just hides the env specific
> implementation of memory allocation. So if I am using 'C' either
> malloc or AXIS2_MALLOC are one and the same. Am I correct? On a
> similar note, is there any advantage in using axis2_char_t* over just
> char*? 
Yes there are advantages.  when using AXIS2_MALLOC you can plug
different mempry allocation mechanisms to Axis2/C. For example when
Axis2/C is used with Apache2 (httpd module) it uses httpd memory pools.
If you use malloc you can't get these advantages.

Using axis2_char also has the same advantage. You can plug different
charactor encoding systems using axis2_char.

-Manjula.


> 
> 
> I thank all of you for ur help and patience as I try to understand the
> Axis2 framework.
> 
> Subra


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-c-user-help@ws.apache.org