A ovako nesto:
Code:
type
TBigArray = array[0..3000000] of byte;
PBigArray = ^TBigArray;
var
MyBigArray: PBigArray;
abyte: byte;
begin
MyBigArray := nil;
GetMem(MyBigArray, 2000000);
...
MyBigArray^[0] := 15; // ovo je OK
abyte := MyBigArray^[0]; // i ovo takodje
...
abyte := MyBigArray^[2500000]; // ovo cita memoriju koja NIJE tvoja
MyBigArray^[2500000] := 55; // ovo pise po memoriji koja NIJE tvoja
...
abyte := MyBigArray^[3000100]; // e, ovde radi 'range checking' - ako je ukljucen
...
FreeMem(MyBigArray);
end;
Na ovaj nacin, array je alociran na heap-u. Heap je dinamicka memorija, i sistem ce ti je dati koliko god ima (citaj: virtualna memorija - prostor na disku koji emulira memoriju). Jedino sto moras da pazis da ne prekoracis indeks (vidi gore code).
Rajko