On Dec 24, 6:14 pm, atucker <agjf.tuc...@googlemail.com> wrote:
> I am also curious about this.  Apologies, possibly naive question
> ahead :)
>
> My background is in C++.  By choosing to work with immutable values
> (i.e. with a lot of consts), I found that I was able to avoid most of
> explicit memory management, pointers etc.  Exceptions were:
>
> (a) when interfacing with other people's code, and
> (b) when making optimisations, e.g. to save a needless copy-on-return.
>
> Otherwise everything happened behind the scenes as variables with
> "automatic" lifespan, passing into and out of scope, had their memory
> allocated and deallocated on the stack.
>
> Surely this is the most performant approach to memory management where
> it is possible?  And doesn't Clojure's pure-functional ethos make it
> possible?
>
> Alistair
>

It's great until you want to have more than one reference to a
particular piece of data.
Then you have two options:
a) Copy
b) Make another pointer to it

Option a) is often good enough. But if it's a huge object (like sound
or picture data) you probably can't afford copying it.

Option b) means that you now have lost the ability to manage the
memory through scope alone. You will need manual management or some
kind of GC mechanism. In C++ you often use boost::shared_ptr<> but
that can't handle circular references so there is still a manual
management component to it.

When option a) is too expensive and option b) is too complicated,
that's when you need a real GC.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to