abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 22:44 | Nová verze

    Wayland (Wikipedie) byl vydán ve verzi 1.23.0. Z novinek lze vypíchnout podporu OpenBSD.

    Ladislav Hagara | Komentářů: 0
    včera 21:22 | Zajímavý článek

    Craig Loewen na blogu Microsoftu představil novinky ve Windows Subsystému pro Linux (WSL). Vypíchnout lze GUI aplikaci pro nastavování WSL nebo správu WSL z Dev Home.

    Ladislav Hagara | Komentářů: 0
    včera 12:44 | Pozvánky

    V sobotu 1. června lze navštívit Maker Faire Ostrava, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.

    Ladislav Hagara | Komentářů: 0
    včera 12:22 | Nová verze

    Webový server Caddy (Wikipedie) s celou řadou zajímavých vlastností byl vydán ve verzi 2.8 (𝕏). Přehled novinek na GitHubu.

    Ladislav Hagara | Komentářů: 2
    29.5. 22:11 | Nová verze

    Byla vydána verze 3.0 (@, 𝕏) svobodného softwaru HAProxy (The Reliable, High Performance TCP/HTTP Load Balancer; Wikipedie) řešícího vysokou dostupnost, vyvažování zátěže a reverzní proxy. Detailní přehled novinek v příspěvku na blogu společnosti HAProxy Technologies.

    Ladislav Hagara | Komentářů: 3
    29.5. 21:11 | IT novinky

    Společnost Framework Computer představila novou vylepšenou verzi svého modulárního notebooku Framework Laptop 13 s Intel Core Ultra Series 1, displej s lepším rozlišením a novou webovou kameru. Přímo do Česka jej zatím koupit nelze.

    Ladislav Hagara | Komentářů: 0
    29.5. 15:44 | Nová verze

    Byla vydána nová verze 2.16 svobodného video editoru Flowblade (GitHub, Wikipedie). Přehled novinek v poznámkách k vydání. Videoukázky funkcí Flowblade na Vimeu. Instalovat lze také z Flathubu.

    Ladislav Hagara | Komentářů: 2
    28.5. 21:22 | Zajímavý software

    TerminalTextEffects (TTE) je engine pro vizuální efekty v terminálu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

    Ladislav Hagara | Komentářů: 43
    28.5. 17:11 | Pozvánky

    Od čtvrtka 30. 5. do soboty 1. 6. lze v Praze navštívit Veletrh vědy, tj. největší populárně naučnou akci v České republice, kterou každoročně od roku 2015 pořádá Akademie věd ČR. Vstup zdarma.

    Ladislav Hagara | Komentářů: 14
    28.5. 14:11 | Komunita

    Canonical představil Ubuntu optimalizované pro jednodeskový počítač s RISC-V procesorem Milk-V Mars.

    Ladislav Hagara | Komentářů: 0
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (90%)
     (3%)
     (4%)
     (4%)
    Celkem 1011 hlasů
     Komentářů: 16, poslední 14.5. 11:05
    Rozcestník

    Dotaz: jazyk C - lokální proměnná, kdy dojde k uvolnění?

    1.5.2011 14:40 jardík
    jazyk C - lokální proměnná, kdy dojde k uvolnění?
    Přečteno: 276×
    Dobrý den, pokud ve vlastní funkci (void) vytvořím lokální proměnnou, tak po vyskočení běhu programu z mé funkce (opustím scope) bude za jak dlouho uvolněna z paměti?

    Jde mi o to, že používám jednu knihovnu a nahrávám obrázek. Maj i spešl funkci pro uvolnění té paměti (načtu obrázek- mám ukazatel- zobrazím si obrázek- proměnná je zbytečná, uvolňuji). Jde mi o to, jestli je tam nutné na konci té mé void funkce volat to uvolnění té proměnné, když vlastně vyskočím ze scope a lokální proměnná by se měla uvolnit sama ne?

    V dokumentaci té funkce píšou, že by se o to měl programátor vždy postarat, aby nedocházelo k memory leakům- je o i tento případ?

    Řešení dotazu:


    Odpovědi

    1.5.2011 15:34 rastos | skóre: 62 | blog: rastos
    Rozbalit Rozbalit vše Re: jazyk C - lokální proměnná, kdy dojde k uvolnění?
    V C platí, že ak si pamäť alokoval volaním nejakej funkcie, tak by si ju mal uvolniť volaním zodpovedajúcej funkcie.

    Ak vytvoríš lokálnu premennú vo funkcii, tak to vyzerá takto:

    void fnc()
    {
      int a=0;
    }

    Takáto premenná zaberá sizeof(int) bajtov v pamäti. Jej "alokovanie" robí systém a jej "dealokovanie" robí tiež systém a to automaticky a okamžite ako sa opustí scope jej platnosti. Slová alokovanie a dealokovanie sú v úvodzovkách, pretože ide len o vyhradenie miesta na stack-u.

    Ak ale urobíš

    void fnc()
    {
     NEJAKY_TYP *a=AlokacnaFunkcia();
    }

    tak odalokovanie pamäte, ktorú zabrala "AlokacnaFunkcia()", za teba nikto neurobí. Musíš ho urobiť sám. Môžeš to urobiť v tej istej funkcii, alebo inej funkcii. To je jedno. Len hodnotu pointra, ktorú tá alokačná funkcia vrátila, budeš asi potrebovať dostať až na to miesto, kde zavoláš uvoľnenie.
    1.5.2011 15:38 Filip Jirsák | skóre: 68 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: jazyk C - lokální proměnná, kdy dojde k uvolnění?
    V té lokální proměnné pravděpodobně nemáte uložen celý obrázek, ale jen odkaz na něj. Takže po skončení funkce se uvolní ten odkaz, ale samotný obrázek zůstane v paměti, a protože na něj nevede žádný odkaz, neuvolní se až do konce běhu programu – je to klasický memoryleak. O uvolnění se tedy musíte postarat, a to i v případě, kdy dojde k nějaké chybě v té funkci.
    1.5.2011 15:55 jardík
    Rozbalit Rozbalit vše Re: jazyk C - lokální proměnná, kdy dojde k uvolnění?
    pecka, díky

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.