Hi,
No, they are not equivalent.
The 'const' basically tells the compiler that the object is immutable.
It's used in an argument to promise that the function will not modify the
object. It's used in a return value to say that the caller may not modify
or free the object because the callee will free it later.
So no, your second function will have a memory leak, because g_strdup is
expecting the caller to free the object.
-derek
On Sat, December 22, 2012 6:51 am, Geert Janssens wrote:
> And now a question to show that I never had a formal c/c++ education.
>
> Are the below functions equivalent ?
>
> void funcA ()
> {
> gchar *varA = g_strdup ("Test");
> <do something with a>
> g_free (varA);
> }
>
> and
>
>
> void funcA ()
> {
> const gchar *varA = g_strdup ("Test");
> <do something with a>
> }
>
> I'm mostly wondering if the second function would have a memory leak or
> not. If varA is defined as a const gchar *, will the program
> automatically free the memory allocated with g_strdup ?
>
> I don't expect so, but I'm seeing mixed uses in GnuCash and want to
> determine for once and for all what is the proper way to handle this.
>
> Geert
> _______________________________________________
> gnucash-devel mailing list
> [email protected]
> https://lists.gnucash.org/mailman/listinfo/gnucash-devel
>
--
Derek Atkins 617-623-3745
[email protected] www.ihtfp.com
Computer and Internet Security Consultant
_______________________________________________
gnucash-devel mailing list
[email protected]
https://lists.gnucash.org/mailman/listinfo/gnucash-devel