C (programovací jazyk): Rozdiel medzi revíziami

Smazaný obsah Přidaný obsah
Riadok 174:
* [[Statická alokácia pamäte]]: priestor pre objekty je poskytovaný v binárnom odtlačku programu počas kompilácie; tieto objekty majú [[životnosť (informatika)|životnosť]] takú dlhú ako binárny kód, ktorý ich obsahuje
* [[Automatická alokácia pamäte]]: dočasné objekty je možné uložiť do [[zásobník (informatika)|zásobníka]], tento priestor sa automaticky uvoľňuje a je možné ho znovu použiť potom, ako vykonávanie programu opustí blok, v ktorom je objekt definovaný
* [[Dynamická alokácia pamäte]]: bloky pamäte ľubovoľnej veľkosti je možné vyžiadať počas behu programu použitím knižničných funkcií <code>[[malloc|malloc()]]</code>, <code>[[alloc|alloc()]]</code>, <code>[[realloc|realloc()]]</code> a <code>[[mallocfree|free()]]</code> z oblasti pamäte zvanej ''halda'' (''hromada'') <!-- http://kssj.juls.savba.sk/kssj.cgi?term=halda&s=exact http://kssj.juls.savba.sk/kssj.cgi?term=hromada&s=exact -->; tieto bloky je možné znova použiť potom, ako sa nad nimi zavolá <code>[[mallocfree|free()]]</code>.
 
Tieto tri prístupy majú svoje výhody v rôznych situáciách a majú rôzne nevýhody. Napríklad statická alokácia pamäte nemá žiadne dodatočné náklady na alokáciu (no pri nej sa nedá meniť rozsah alokovanej pamäte), automatická alokácia má malé náklady počas inicializácie a dynamická alokácia má potenciál veľkých nákladov na alokáciu aj uvoľnenie. Na druhej strane priestor zásobníka je zvyčajne oveľa obmedzenejší ako statická pamäť alebo priestor haldy a iba dynamická alokácia umožňuje alokáciu objektov, ktorých veľkosť je známa až počas behu programu. Väčšina programov v C využíva všetky tri spôsoby.