Warning: Declaration of action_plugin_subjectindex_indexer::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/action/indexer.php on line 15

Warning: Declaration of action_plugin_mathjax_enable::register(Doku_Event_Handler &$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/mathjax/action/enable.php on line 62

Warning: Declaration of action_plugin_googleanalytics::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/googleanalytics/action.php on line 40

Warning: Declaration of action_plugin_folded::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/folded/action.php on line 40

Warning: Declaration of action_plugin_hidden::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/hidden/action.php on line 28

Warning: Declaration of action_plugin_include::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/include/action.php on line 354

Warning: Declaration of action_plugin_tag::register(&$contr) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/tag/action.php on line 175

Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/action/indexer.php:15) in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/auth.php on line 532

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/auth.php on line 818

Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/action/indexer.php:15) in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/actions.php on line 215
jazykc:dynamicka-prace-s-pameti [Bo.bule]

====== Dynamická práce s pamětí ====== * [[dox>dynamicka-prace-s-pameti/dynamicky-zasobnik.c|Dynamický_zásobník]] * [[dox>dynamicka-prace-s-pameti/spojeni-textovych-retezcu.c|Spojení_textových_řetězců]] ======Přetypování ukazatelů====== Přestože jsou ukazatele při deklaraci vztaženy ke konkrétnímu datovému typu, umožňuje jazyk C definovat také ukazatel (ukazatel na typ void), který není vázán ke konkrétnímu typu. S takovým ukazatele pak lze některé operace provádět pouze při uvedení explicitní konverze. V praxi se tyto ukazatele používají převážně při deklaracích a definicích funkcí, které pracují s daty libovolných typů. Příklad: <code c> void *moje_pamet; ((int *)moje_pamet)++; </code> ======Funkce pro práci s pamětí====== Všechny níže uvedené funkce jsou definovány v knihovně [[:c:stdlib.h]]. Při výpočtu velikosti bloku se v praxi hojně využívá operátor [[:c:sizeof]]. Pokud není možné paměť alokovat, vrací níže uvedené funkce hodnotu NULL (ukazatel na nulovou adresu). =====malloc===== void *malloc(size_t size);\\ Funkce alokuje paměť velikosti size a vrátí ukazatel na danou oblast paměti. =====calloc===== void *calloc(size_t items, size_t size);\\ Funkce alokuje paměť pro //items// prvků o velikosti //size// (tedy items*size bytů), navíc tuto paměť vyplní nulami. =====realloc===== void *realloc(void* old, size_t size);\\ Funkce zajišťující změnu velikosti dříve alokovaného bloku paměti //old// na velikost //size//. Data původního bloku paměti budou zkopírována do nově alokovaného. =====free===== void free(void* block);\\ Funkce pro uvolnění paměti //block//. Používá se vždy, když víme, že už danou paměť nebudeme v programu používat. ======Praxe====== * neuvolňování paměti vzniká tzv. //memleak// * kontrola: statická splint, runtime: valgrind * defacto sem patří i [[:c:string.h#strdup]] ---- cc,upol


Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/auth.php on line 818
jazykc/dynamicka-prace-s-pameti.txt · Last modified: 2015/01/15 20:47 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0