magid@sandstorm.Berkeley.EDU (Paul Magid) (01/10/91)
First I would like to thank all the people who pointed me in the
direction of DDJ article that answered my last question. Below please find the
code that I am now using, it is pretty much directly out of the article. I
would now like to be able to allocate about 75% of the systems memory to the
large data structure. However, I am at a loss for how to do it. As it stands
the program either has enough memory to run or it does not, I would like to be
able to allocate a fixed proportion of available memory to it. Thank you in
advance for your help.
Paul
================================================================================
const
MAXROWS = 501; {7501}
MAXCOLS = 82;
type
colPtr = ^colArray;
colArray = array [1..MAXCOLS] of char;
colNode = record
cols : colPtr;
End;
rowPtr = ^rowArray;
rowArray = array [1..MAXROWS] of colNode;
var
Filecont:rowPtr;
Procedure create (var D : rowPtr;
var error : Boolean);
{ Create huge array 'D' and pass back pointer to it }
Var row : word;
Begin
Error := false;
If maxAvail > sizeof (rowArray) then { if space available }
GetMem (D, sizeof (rowArray)) { allocate row array }
Else begin
D := nil;
Error := true;
End;
If D <> nil then
For row := 1 to maxRows do begin { allocate all rows }
If not error then
If maxAvail > sizeof (colArray) then { if space }
GetMem (D^ [row].cols, sizeof (colArray)) { alloc row }
Else
Error := true;
End;
End;