Deprecated: Function set_magic_quotes_runtime() is deprecated in /DISK2/WWW/lokiware.info/mff/wakka.php on line 35 Matfiz : DynamickéProměnné

Matfiz: DynamickéProměnné

Dynamické proměnné

Příklad

* SpojovýSeznam

Dynamická (de)alokace v Pascalu

New() & Dispose()

Chci dostat přiděleno místo v paměti (alokovat ho) a uložit si její adresu do paměti:

Deprecated: Assigning the return value of new by reference is deprecated in /DISK2/WWW/lokiware.info/mff/formatters/highlight/pascal.php on line 5

var p: ^typ;
{...}
New(p);

Chci uvolnit (uvolnit pro další použití, dealokovat) přidělenou paměť:

Deprecated: Assigning the return value of new by reference is deprecated in /DISK2/WWW/lokiware.info/mff/formatters/highlight/pascal.php on line 5

Dispose(p);

Pozor: Ukazatel teď ukazuje “kamsi”, musím do něj uložit nulový Ukazatel:

Deprecated: Assigning the return value of new by reference is deprecated in /DISK2/WWW/lokiware.info/mff/formatters/highlight/pascal.php on line 5

p := NIL;

New() & Mark() & Release()

Mark(p) mi do p uloží vrchol haldy. Release(p) určí vrchol zásobníku na adresu p. Nevhodné kombinovat s Dispose() (je asi jasné proč).

GetMem() a FreeMem()

Deprecated: Assigning the return value of new by reference is deprecated in /DISK2/WWW/lokiware.info/mff/formatters/highlight/pascal.php on line 5
GetMem(ukazatel, pocetBajtu);  { alokace }
FreeMem(ukazatel, pocetBajtu); { dealokace }

Typicky je pocetBajtu vyraz ve tvaru pocet * SizeOf(neco), abych alokoval pole o poctu pocet prvku typu stejneho jako neco.