[comp.sys.mac.programmer] Problem with MPW Pascal _HeapResult_ function

dpmkelly@swift.cs.tcd.ie (05/06/91)

While using MacApp, I have had some problems with memory allocation.

Specifically, I constructed a number of linked lists, and, not
unusually, ran out of heap space.  I made a rough estimate of
the amount of space needed and used the _PLHeapInit_ procedure at
the start of my main program file to reserve this much and a little
extra.  I also set the _allowNonCont_ parameter to TRUE and specified
that this much memory again could be allocated if required. This 
all added up to about 100K; the MPW Pascal built-in heap-initialisation
routine allocates just less than 5K.

The problem piece of code was of this form:

	TYPE TElementPtr=RECORD...

	VAR currentElement: TElementPtr;

	New(currentElement);
	Writeln(HeapResult);
	Writeln(Ord4(currentElement));
	PROGRAMBREAK('--- HeapResult and pointer values ---');
	currentElement^.count:=c;
	PROGRAMBREAK('--- assignment made ---');

When run, this yielded the result (braces enclose my comments):

	0	{ indicates New operation was successful }
	$0000	{ but this is not a valid pointer }
	--- HeapResult and pointer values ---	{ issued `GO' command }
	<machine freezes; can't even enter MacsBug>

When I changed the parameters to _PLHeapInit_ so that the amount
heap space allocated was drastically increased, everything was just
fine.  This makes me feel that _HeapResult_ is faulty.  Has anybody
else had this problem?

I was also surprised that the initial increase was not sizable
enough.  By how much do MacApp's initialisation routines increase
the heap size?

Thanks,

Dave.

--
David Kelly, Department of Computer Science, Trinity College, Dublin.