dispose: bug or feature?

Russell Whitaker russ at ashlandhome.net
Tue Dec 11 23:27:14 CET 2007

On Mon, 10 Dec 2007, Scott Moore wrote:

> What did you expect to happen?
I expected "dispose" to undo what "new" does.
Could not find a comment in gpc's source that states otherwise.

At present,

   1. allocates a block of memory from the heap, the size is the size
      that p wants to point to.
   2. returns the address of that memory block.

   1. marks the block of memory that p points to as free.
      (I say "marks" because the block doesn't disapear)

Thus, this works, but shouldn't:

   writeln( p^ );
   dispose( p );
   writeln( p^ );

If you dig into gpc's heap.pas you will find code that is the
equivalent of:

   if p <> nil then

What I'd like to see is the equivalent of:

   if p <> nil then
     p := nil;
     writeln( stderr,"WARN: illegal use of dispose");

In places the specs are hard to follow, but I think the specs would
allow this.


More information about the Gpc mailing list