C++, Free-Store vs Heap

See http://www.gotw.ca/gotw/009.htm; it can describe the differences between the heap and the free-store far better than I could:

Free-store:

The free store is one of the two
dynamic memory areas, allocated/freed
by new/delete. Object lifetime can be
less than the time the storage is
allocated; that is, free store objects
can have memory allocated without
being immediately initialized, and can
be destroyed without the memory being
immediately deallocated. During the
period when the storage is allocated
but outside the object’s lifetime, the
storage may be accessed and
manipulated through a void* but none
of the proto-object’s nonstatic
members or member functions may be
accessed, have their addresses taken,
or be otherwise manipulated.

Heap:

The heap is the other dynamic memory
area, allocated/freed by malloc/free
and their variants. Note that while
the default global new and delete
might be implemented in terms of
malloc and free by a particular
compiler, the heap is not the same as
free store and memory allocated in one
area cannot be safely deallocated in
the other. Memory allocated from the
heap can be used for objects of class
type by placement-new construction and
explicit destruction. If so used, the
notes about free store object lifetime
apply similarly here.

Leave a Comment