The Math Forum

Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Math Forum » Discussions » Software » comp.soft-sys.matlab

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: OO matlab - deleting objects
Replies: 6   Last Post: Feb 27, 2013 5:20 PM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
Steven Lord

Posts: 18,038
Registered: 12/7/04
Re: OO matlab - deleting objects
Posted: May 19, 2009 9:46 AM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

<> wrote in message
> On May 18, 6:43 pm, "Nasser Abbasi" <> wrote:
> > <> wrote in message
> >
> >
> >

> > > Do we have to do explicit memory cleanup in matlab
> >
> > No. See below
> >
> >
> >
> > "Object Life-Cycle Management
> > MATLAB implements a strategy for object life-cycle management that
> > supports
> > destructors and destroys objects as soon as they become unreachable from
> > any
> > MATLAB workspace. The MATLAB language has always managed memory
> > allocation
> > by destroying workspace variables when a function exits, either through
> > an
> > error or through a normal return to the calling context. We wanted to
> > preserve this simple model but also extend it to handle objects that
> > might
> > persist beyond the execution of a function (by being returned to a
> > calling
> > function or stored in some other object returned to a calling function).
> > A MATLAB handle class can define a delete method that behaves very much
> > like
> > a destructor in languages like C++ (Figures 3a and 3b). In MATLAB, a
> > delete
> > method is called just before an object is destroyed because the object
> > can
> > no longer be accessed from any MATLAB variable. The delete method can be
> > used to close a file, close an external application, or notify another
> > object that needs to react to the destruction of the first object. It is
> > defined by the handle class, and only handle classes have destructors in
> > MATLAB. "
> >
> > "Some programmers might find it strange that non-handle objects have no
> > destructors. Since MATLAB object destruction is always automated, a
> > non-handle object that holds other objects does not need to do anything
> > to
> > destroy those other objects."
> >
> > --Nasser

> Thanks. But I saw the above mentioned code from an experienced matlab
> pro
> Even mathworks says below
> "a non-handle object that holds other objects does not need to do
> anything to
> destroy those other objects"
> does this imply handle objects do have to clean objects inside them
> explicitly?


When a non-handle object is no longer accessible, it and all its properties
are cleared from memory just like normal variables when they go out of scope
(like when the function whose workspace they are in exits.) If that
non-handle object contains another object in one of its properties, then if
that other object is a non-handle object it too will be cleared from memory;
if it is a handle object, its delete method (if any) will be called, then it
will be cleared from memory. Thus in neither of those situations do you,
the user, need to do anything special.

When a handle object is no longer accessible, the same procedure as I
described above happens, except that its delete method is called before it
is cleared from memory. The reason the text above calls out non-handle
objects, I believe, is because they operate somewhat differently than users
may expect based on their experience with other object-oriented languages
(in that they don't have destructors.)

Steve Lord

Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© The Math Forum at NCTM 1994-2018. All Rights Reserved.