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.