On Friday 07 February 2003 00.09, Martijn Sipkema wrote:
[...]
When dynamically linking C++ classes that imlement an
interface you
can export create/destroy functions that return/take a pointer to a
instance. Note
that you should not use virtual destructors instead of a destroy
function since
the delete function called might not match the new from the
dynamically loaded code.
I had to think some before I realized what you're getting at. :-)
Indeed, new and delete must be matched, since the ones in another
binary might well use a different memory manager, or be wrapped or
something.
BTW, I believe
this is about the way normal constructors work in
Delpih/Object Pascal - which is why you cannot have static
instances at all. No matter what you type, what you get is always
a pointer.
On of the best things about C++ is having auto storage classes,
since it makes resource management much easier/safer. I really
don't like Delphi/Object Pascal at all.
Nor do I, really. The whole thing is a nice tool for RAD when it comes
to some types of applications, but there are things like this
particular language "feature" that are getting on my nerves at times.
I'm not sure but I believe
with Java it is also not possible to create classes on the stack,
but Java has a garabage collector (and that's not always convenient
for RT tasks).
Or rather, it makes it useless for hard real time, unless 1) the
underlying memory manager is deterministic (ie can run on a fixed,
preallocated pool) and 2) you have full control over the garbage
collector.
//David Olofson - Programmer, Composer, Open Source Advocate
.- The Return of Audiality! --------------------------------.
| Free/Open Source Audio Engine for use in Games or Studio. |
| RT and off-line synth. Scripting. Sample accurate timing. |
`--------------------------->
http://olofson.net/audiality -'
---
http://olofson.net ---
http://www.reologica.se ---