www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Sharing memory with C, ref counting, best practises?

reply Manu <turkeyman gmail.com> writes:
I just wanted to sample community opinion on some modern best practices for
sharing memory with C code.
What have people tried, what works well, what doesn't?

I need to produce objects which C++ code will use, and D code may lose all
references to this memory at times.
My current intent is to use a foreign allocator supplied from C++,
allocating in the C++ heap, then perhaps use reference counting to track
the life of the objects, since the GC won't be so useful in this context.
My objects lend themselves better to ref counting anyway I think.

Just to double check, D has no intrinsic support for ref counted classes
does it? Are there best practises/standard implementations I should follow?

Some sick part of me considered using COM, since lots of C++ code already
knows how to interface COM. Thoughts?

I have pre-conceptions here, I'm just looking for options + opinions on
what might be best.
Apr 25 2012
parent Walter Bright <newshound2 digitalmars.com> writes:
On 4/25/2012 1:36 AM, Manu wrote:
 I just wanted to sample community opinion on some modern best practices for
 sharing memory with C code.
 What have people tried, what works well, what doesn't?

 I need to produce objects which C++ code will use, and D code may lose all
 references to this memory at times.
 My current intent is to use a foreign allocator supplied from C++, allocating
in
 the C++ heap, then perhaps use reference counting to track the life of the
 objects, since the GC won't be so useful in this context.
 My objects lend themselves better to ref counting anyway I think.

 Just to double check, D has no intrinsic support for ref counted classes does
 it? Are there best practises/standard implementations I should follow?

 Some sick part of me considered using COM, since lots of C++ code already knows
 how to interface COM. Thoughts?

 I have pre-conceptions here, I'm just looking for options + opinions on what
 might be best.
I suggest using COM.
Apr 25 2012