abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

    dnes 08:00 | Komunita

    Projekt GNU dnes slaví 40. výročí. Přesně před čtyřiceti lety, 27. září 1983, Richard Stallman oznámil, že se chystá napsat s Unixem kompatibilní operační systém GNU (Gnu's Not Unix). Hlavní oslava a setkání hackerů probíhá ve Švýcarsku ve městě Biel/Bienne. Na programu je také přednáška Richarda Stallmana.

    Ladislav Hagara | Komentářů: 3
    včera 15:55 | Nová verze

    Byl vydán Mozilla Firefox 118.0. Přehled novinek v poznámkách k vydání, poznámkách k vydání pro firmy a na stránce věnované vývojářům. Vypíchnout je nutno automatický lokální strojový překlad webových stránek. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 118 je již k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 10
    včera 12:55 | Nová verze

    Byla vydána nová major verze 15.0.0 softwaru OCRmyPDF pro přidávání textové vrstvy k naskenovaným PDF dokumentům (PDF/A). Přehled novinek v poznámkách k vydání. OCRmyPDF využívá pro optické rozpoznávání znaků (OCR) engine Tesseract.

    Ladislav Hagara | Komentářů: 6
    včera 12:22 | Zajímavý software

    Karel Matějka zveřejnil druhé demo své chystané hry Bzzzt. Kromě verze pro Windows a macOS je dostupná i verze pro Linux. Plná verze hry má vyjít zanedlouho.

    Ondřej J | Komentářů: 4
    25.9. 20:33 | IT novinky

    Noví Bulánci byli oficiálně vydáni. V roce 2021 bylo na Startovači na podporu vývoje této hry vybráno 7,3 miliónů Kč. Hra je zatím určena jenom pro Windows, díky Protonu ale běží také na Linuxu.

    Ladislav Hagara | Komentářů: 8
    25.9. 14:55 | IT novinky

    ChatGPT může vidět, slyšet a mluvit.

    Ladislav Hagara | Komentářů: 4
    25.9. 14:33 | Zajímavý software

    Upscaler je open source nástroj pro zvýšení rozlišení a vylepšení obrázků pomocí AI. Vývoj probíhá na GitLabu. Instalovat lze také z Flathubu. Stejně jako Upscayl je Upscaler postaven nad Real-ESRGAN.

    Ladislav Hagara | Komentářů: 1
    25.9. 12:11 | Nová verze

    GNUnet (Wikipedie) byl vydán v nové major verzi 0.20.0. Jedná se o framework pro decentralizované peer-to-peer síťování, na kterém je postavena řada aplikací.

    Ladislav Hagara | Komentářů: 0
    25.9. 11:55 | Komunita

    V Dublinu o víkendu proběhla dvanáctá iterace multimediální konference Video Dev Days, kterou pravidelně pořádá nezisková organizace VideoLAN. Záznamy přednášek z prvního a druhého dne jsou dostupné na YouTube.

    elenril | Komentářů: 0
    24.9. 20:44 | Nová verze

    LibrePCB, tj. svobodný multiplatformní softwarový nástroj pro návrh desek plošných spojů (PCB), dospěl po pěti letech vývoje do verze 1.0.0. Přehled novinek v příspěvku na blogu a v aktualizované dokumentaci. Zdrojové kódy jsou k dispozici na GitHubu pod licencí GPLv3.

    Ladislav Hagara | Komentářů: 0
    Knihy s linuxovou tematikou
     (19%)
     (15%)
     (51%)
     (27%)
    Celkem 277 hlasů
     Komentářů: 11, poslední 17.9. 19:19
    Rozcestník

    Dotaz: Uvolňování paměti při ukončení programu

    Jardík avatar 11.2.2011 13:10 Jardík | skóre: 40 | blog: jarda_bloguje
    Uvolňování paměti při ukončení programu
    Přečteno: 246×
    Zdravím, na gtk-devel-list mailing listu se rozvynula vášnivá diskuse ohledně uvolňování paměti při ukončení programu. Abych to shrnul, začalo to příspěvkem, že při ukončení programu (gtkmm)
    int main (int argc, char *argv[])
    {
          Gtk::Main *app = new Gtk::Main (&argc, &argv);
          delete app;
          return 0;
    }
    
    není uvolněna veškerá alokované paměť a že jsou tam tedy memory leaky. Problém je ale ve fungování glib a GTK, nikoliv v GTKMM. Vypadá nějak takto
    int main(int argc, char **argv)
    {
      gtk_init(&argc, &argv);
      // dělej něco tady
      gtk_main();
      return 0;
    }
    

    Po ukončení smyčky běžící v gtk_main() je tedy program ukončen a věci alokované v gtk_init (a v jí volaných fcí) a pak v dalších funkcích třeba gtk_widget_get_type() (skryté za makrem GTK_TYPE_WIDGET), funkcích jako g_warning(), prostě nejsou uvolněny a je to necháno operačnímu systému.

    Padly argumenty typu "nemá cenu to uvolňovat a zdržovat ukončení programu, když to stejně uklidí OS" a že "je to knihovna neurčená k několikanásobnému natahování do paměti a tak není třeba při ukončení programu nic uvolňovat". Dalších pár lidí zase tvrdilo, že je slušnost si po sobě uklízet a že by bylo dobré mít (třeba i volitelnou) funkci typu gtk_cleanup(), také kvůli lepší detekci leaků, které nastanou v samotné aplikaci mimo GTK.

    Do diskuse jsem se nazapojil a nejsem asi schopen posoudit, co je lepší - mít o trochu zjednodušené API a nechat uklízet OS, nebo uklízet sám. Uklízet u knihoven, co jsou po celou dobu "životnosti" programu v paměti, nebo ne?

    Věřím v jednoho Boha.

    Řešení dotazu:


    Odpovědi

    11.2.2011 13:30 JS
    Rozbalit Rozbalit vše Re: Uvolňování paměti při ukončení programu
    Viz tez tuto diskusi. Strucne, nazory se ruzni. Ja jsem spis zastance uklizeni a korektniho ukonceni, protoze:

    1. Programator tim dava najevo, ze vi, co kde ma, a tedy ze rozumi programu, a ze je tedy spis napsan korektne.

    2. Nikdy nevite, kde vas kod skonci - pokud skonci v serveru nebo nejakem dlouho bezicim procesu, muze to byt problem.

    3. Existuji nastroje na detekci leaku, a v takovem pripade tohle muze zbytecne prekazet (podobne jako neodstraneny nevinny warning pri kompilaci).
    12.2.2011 16:16 Sten
    Rozbalit Rozbalit vše Re: Uvolňování paměti při ukončení programu
    Korektní uvolňování u OOP (které GTK implementuje) je důležité a mělo by se striktně dodržovat, protože systém potom sice uklidí, ale destruktory nezavolá a to se potom „velmi dobře“ ladí.

    A největší problém je u programů, které GTK načtou jenom na chvíli (třeba kvůli vytvoření PDF) a potom jej zase uvolní, ale paměť zůstane naalokovaná. Knihovna by si po sobě měla umět uklidit.

    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.