Re: RFC: glocal - automatically freeing memory when it goes out of scope
- From: Morten Welinder <mortenw gnome org>
- To: Mikkel Kamstrup Erlandsen <mikkel kamstrup canonical com>
- Cc: gtk-devel-list <gtk-devel-list gnome org>
- Subject: Re: RFC: glocal - automatically freeing memory when it goes out of scope
- Date: Mon, 21 Nov 2011 09:45:54 -0500
> if (1)
> {
> glocal_object GFile *file = g_file_new_for_path ("/tmp");
> glocal_string gchar *basename = g_file_get_basename (file);
> g_debug ("Basename is '%s'", basename);
> // look ma' no leaks!
> }
This is, of course, cute but I don't think this would actually catch many of the
non-trivial leaks that make it into the code base today. Those are typically
not scope based -- possibly because the attention span of the average
programmer is long enough to cover the writing of a whole function, ;-)
The current serious leak cases I see are:
* The dispose or finalize method of an object type fails to free some
stuff. This is
quite common.
* Cyclical links. The resulting leaks are typically quite big.
A case scope-based destructors would handle is this:
* Multiple return statements, typically for error handling, where one or more
branches forget to free stuff. Cursory valgrinding doesn't catch this because
the code doesn't get exercised.
The case isn't uncommon, per se, but programs don't hit the cases often.
M.
PS: The situation where scope-based destruction is important is for languages
such as C++ with exceptions in use. C with GObject is not such a language.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]