True disposable objects (add "Finalized!" assertion)
Denis Shelomovskij
verylonglogin.reg at gmail.com
Fri May 4 07:28:51 PDT 2012
This idea is too obvious and I suppose I'm the only one not knowing it,
but I have never seen it's implementation. Why?
The idea:
1. `Object` class has hidden `isAlive` field which is true since
construction and up to finalization.
2. Every method asserts that the object is alive first.
3. There is an `finalize` function that just rt_finalize an object in
debug mode but can even free memory in release mode.
Isn't it no-brainer? Isn't it the only way to debug manual memory
management and shared resources without error-prone boilerplate?
This is what I missed in C#, where I can dispose an object but I have to
manually check the object isn't disposed every time I use it or in every
it's method to find where I'm doing something with a disposed object by
a mistake.
IMHO finding using of dead references is almost as major as not allowing
to free memory of alive objects (I mean GC), but GC is often implemented
and dead references detection isn't.
Strongly require your thoughts.
--
Денис В. Шеломовский
Denis V. Shelomovskij
More information about the Digitalmars-d
mailing list