Am 13.02.2012 03:21, schrieb Don:
On 12.02.2012 19:36, Benjamin Thaut wrote:
I'm currently trying to use D without a gc and didn't have major
problems so far. A minor issues is that struct.toString() returns a
string and this will almost allways leak memory when this is called.
The question now is, can I change the return type of struct.toString()
somewhere inside druntime or is it hardcoded in the compiler?

It was possible without any problems to change the return type of
Object.toString() and therefore every class in D because Object is the
baseclass for every class. Is there something similar for structs?

Kind Regards
Benjamin Thaut

I don't know why struct toString() still exists. It's a legacy from the
very beginning of D, back when the language didn't even have templates.
std.format doesn't even require it, any more.

Well TypeInfo_struct declarers a delegate for the xtostring member which returns a char[]. So I'm curiours if the compiler fills that member, and if it does any checking on the toString() method while doing so.

Basically I have 2 string types now:
1) string = garantueed to be either in static memory or to outlive every object that has a reference to it 2) rcstring = reference counted string (you have to use the most ugly casts you can think of to actually make reference counting possible with the D typesystem)

Reply via email to