Re: new without delete
Here the intent is to create single object for the class which when
once init will destroy at the application terminate. Something
suggested by name of the class also. :-)
If required to limit the lifetime of the single object created, here
GlobalClass can also maintain instance count as
1. instance() will create object at first call and just increment
count for next calls.
2. Provide Deinit() which decrements count and on instance count == 0
delete's the obj.
-Amit
On Mar 3, 1:33 am, Marcel M=FCller <news.5.ma...@spamgourmet.com> wrote:
pauldepst...@att.net wrote:
The following code for a singleton implementation is recommended in a
website:
class GlobalClass
{
[...]
static GlobalClass *instance()
{
if (!s_instance)
s_instance = new GlobalClass;
return s_instance;
}
};
Is the author at fault for the lack of delete statements? Are there
memory-leak issues?
Well, since it is a singleton it is no memory leak in the way that there
will be memory that is no longer needed. When the application
terminates, all private memory is freed anyway. And before the
application terminates it must not be deleted.
In fact the mentioned pattern uses late initialization which usually is
easier to handle than static object initialization. However, a graceful
cleanup of singletons with dependencies is even more complicated than
the initialization part. So this is simply ignored here.
As long as your objects do not deal with external resources, that are
not released by the operation system, when your application terminates,
this is fine. Otherwise you have a problem with unexpected terminations
anyway.
Marcel