[ale] OT: C not C++ Question (C Garbage collectors)

Mike Panetta ahuitzot at mindspring.com
Mon Dec 30 10:43:36 EST 2002


There are C garbage collectors, in fact, GCC uses one.  Take a look at
the Bohem GC.  I have never personally used it, but it must be good, as
I believe thats the one GCC and GCJ use.

Mike

On Sun, 2002-12-29 at 19:40, cfowler wrote:
> 
> > 
> > 	You might look into Henry Spencer's alloca() implementation that uses
> > malloc.  The gcc alloca() allocs mem from the stack, which is reclaimed
> > automatically when the function returns from the function that uses it. 
> > Henry's alloca() uses malloc, but keeps the blocks in a linked list. 
> > Calling alloca(0) in the "top loop" of your program performs garbage
> > collection.
> > 
> >
> 
> Would it protect the programmer in this case:
> 
> String *tmp = String_new("Hello World!\r\r");
> tmp = String_new("Hello Again!\r\n");
> 
> Since tmp got a new pointer the original pointer is forever
> lost.  In Java that memory will just be reaped by GC but in C
> it is lost until exit() is called :)
> 
> However it does seem that alloca() will help in this instance
> 
> Object *obj1 = Object1_new(Object2_new("Nothing"));
> 
> Since the prgrammer never really got a poiner to the object created
> by Object2_new() above, they can not free it.  This is kinda the 
> behavior we are looking to not happen.  We want some good GC.
> 
> I guess calling alloca(NULL) is just like doing a System.gc() in Java. 
> However alloca() will immediaetly do the GC where Java may or may not at
> that particular moment.  Maybe liboop stills needs a GC thread that can
> at intervals check ref counts on objects and reap that mem, but it still
> does not fix the bad programming as above.
> 
> 
> 
> _______________________________________________
> Ale mailing list
> Ale at ale.org
> http://www.ale.org/mailman/listinfo/ale


_______________________________________________
Ale mailing list
Ale at ale.org
http://www.ale.org/mailman/listinfo/ale






More information about the Ale mailing list