Re: Memory Leak
Re: Memory Leak
- Subject: Re: Memory Leak
- From: Jean-Daniel Dupas <email@hidden>
- Date: Tue, 27 May 2008 13:06:25 +0200
Le 27 mai 08 à 10:54, Horst Hoesel a écrit :
[snip]
Are destructors always run (or run in the same way if called
explicitly by the programmer or by the OS itself)? If so, it would
seem like any delay the destructors take to run would happen no
matter whether the programmer explicitly clean up the objects
or just
lets the OS do it anyway. Unless the OS runs the destructors in the
background and so doesn't block the user interface, whereas the
program would appear to hang while it calls them in the main thread
before releasing the UI.
I don't know in detail what is happening "under the covers". I can
only
provide this anecdote that describes some observed behaviour:
We had a large, complex (unnecessarily so in both cases, I believe)
C++
project, that we built cross-platform (OSX, Linux, win32).
On exit, the original author had written the code such that it
*explicitly* called the destructors for all the widgets he'd created.
When the user clicked the exit button, the app would take 20~30
seconds
to close, and at least one of the CPU's would max out during this
time.
The code was modified to *not* explicitly call the destructors.
Thereafter, when the user clicked the exit button, the app would
terminate "straight away", with no CPU maxing out.
[snip]
In general when an OS (Mac OS X, Windows, Linux, ...) terminates a
process no destructors are called. The OS reclaims assigned memory
at a different/lower level than release, dealloc, free (or whatever
your runtime model uses). So unless the destructores do things like
saving object/program/data/preference state information to disk or
tear down network connections orderly, there is no need to call them
prior to program exit.
That said, it is good practice to call the destructors on exit,
since not doing so implies the knowledge that there are no
preferences to save, network connections to close, ...
HTH,
Horst
Or just have one method that is call on exit and know what it should
save or/and close, so the OS will not have to call thousand of useless
destructors. (like -applicationWillTerminate: in Cocoa).
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden