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 > gnucash-devel@gnucash.org > https://lists.gnucash.org/mailman/listinfo/gnucash-devel > -- Derek Atkins 617-623-3745 de...@ihtfp.com www.ihtfp.com Computer and Internet Security Consultant _______________________________________________ gnucash-devel mailing list gnucash-devel@gnucash.org https://lists.gnucash.org/mailman/listinfo/gnucash-devel