A question about the GC

Kirk McDonald kirklin.mcdonald at gmail.com
Sun Dec 23 20:27:59 PST 2007


Jarrod wrote:
> Hey all,
> 
> I have a C library that takes the address to a class and stores it, 
> associating the address of the class with a cluster of data. That way, if 
> I try to create a second class tied to the same data, it merely passes 
> back the address of the first class. Also, if the data is destroyed, it 
> explicitly calls the class destructor for me.
> 
> This is all well and good, but my concern is that the garbage collector 
> may reallocate my class if it is a 'copying' gc (I'm not really sure what 
> it really is, I can't see it mentioned anywhere). If my class is moved, 
> what happens to the pointers in my C code? Will they be updated too? I 
> doubt it.
> Is this a cause for concern or is D's GC of the non-moving variety? If it 
> does indeed move I guess I'll have to override new/delete.
> 
> Thanks,

It is a non-moving GC. Also, the D GC won't see any pointers held by the 
C library, so be sure that you keep references to your GC-controlled 
classes in your D code, where the GC can see them.

-- 
Kirk McDonald
http://kirkmcdonald.blogspot.com
Pyd: Connecting D and Python
http://pyd.dsource.org


More information about the Digitalmars-d-learn mailing list