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í
×
    dnes 04:33 | IT novinky

    Společnost Espressif (ESP8266, ESP32, …) získala většinový podíl ve společnosti M5Stack, čímž posiluje ekosystém AIoT.

    Ladislav Hagara | Komentářů: 0
    včera 23:44 | Nová verze

    Byla vydána nová stabilní verze 3.5 svobodného multiplatformního softwaru pro editování a nahrávání zvukových souborů Audacity (Wikipedie). Přehled novinek také na YouTube. Nově lze využívat cloud (audio.com). Ke stažení je oficiální AppImage. Zatím starší verze Audacity lze instalovat také z Flathubu a Snapcraftu.

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

    50 let operačního systému CP/M, článek na webu Computer History Museum věnovaný operačnímu systému CP/M. Gary Kildall z Digital Research jej vytvořil v roce 1974.

    Ladislav Hagara | Komentářů: 0
    včera 16:22 | Pozvánky

    Byl zveřejněn program a spuštěna registrace na letošní konferenci Prague PostgreSQL Developer Day, která se koná 4. a 5. června. Na programu jsou 4 workshopy a 8 přednášek na různá témata o PostgreSQL, od konfigurace a zálohování po využití pro AI a vector search. Stejně jako v předchozích letech se konference koná v prostorách FIT ČVUT v Praze.

    TomasVondra | Komentářů: 0
    včera 03:00 | IT novinky

    Po 48 letech Zilog končí s výrobou 8bitového mikroprocesoru Zilog Z80 (Z84C00 Z80). Mikroprocesor byl uveden na trh v červenci 1976. Poslední objednávky jsou přijímány do 14. června [pdf].

    Ladislav Hagara | Komentářů: 6
    včera 02:00 | IT novinky

    Ještě letos vyjde Kingdom Come: Deliverance II (YouTube), pokračování počítačové hry Kingdom Come: Deliverance (Wikipedie, ProtonDB Gold).

    Ladislav Hagara | Komentářů: 3
    21.4. 19:11 | Komunita

    Thunderbird 128, příští major verze naplánovaná na červenec, přijde s nativní podporou Exchange napsanou v Rustu.

    Ladislav Hagara | Komentářů: 19
    21.4. 04:44 | Komunita

    Byly vyhlášeny výsledky letošní volby vedoucího projektu Debian (DPL, Wikipedie). Novým vedoucím je Andreas Tille.

    Ladislav Hagara | Komentářů: 7
    21.4. 00:11 | Nová verze

    Po osmi měsících vývoje byla vydána nová verze 0.12.0 programovacího jazyka Zig (GitHub, Wikipedie). Přispělo 268 vývojářů. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 2
    20.4. 23:55 | Pozvánky

    Poslední měsíc byl plný zajímavých akcí, o kterých Vám bastlíři z projektu MacGyver mohou povědět, protože se na ně sami vydali. Kde všude byli, ptáte se? Objevili se na Installfestu, Arduino Day, Hackaday Europe a tajném srazu bastlířů z Twitteru. A z každé akce pro vás mají zajímavé poznatky.

    … více »
    bkralik | Komentářů: 1
    KDE Plasma 6
     (71%)
     (10%)
     (2%)
     (17%)
    Celkem 670 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Dotaz: Uvolnění paměti způsobí SIGSEGV

    Jardík avatar 31.7.2006 20:58 Jardík | skóre: 40 | blog: jarda_bloguje
    Uvolnění paměti způsobí SIGSEGV
    Přečteno: 157×
    Potřeboval bych poradit, kde dělám chybu. V následujícím kódu dojde k neoprávněnému přístupu do paměti při volání funkce free():
    if(!m_pBuffer)
    {
    	m_nAllocated = bufferSize;
    	m_pBuffer = Memory<T>::alloc(m_nAllocated);
    	m_nItems = 0;
    } 
    else if(m_nItems+1 > m_nAllocated)
    {
    	m_nAllocated += bufferSize;
    	T *newBuffer = Memory<T>::alloc(m_nAllocated);
    	Memory<T>::copy( newBuffer, m_pBuffer, m_nItems );
    	Memory<T>::free( m_pBuffer ); //zde nastává SIGSEGV
    	m_pBuffer = newBuffer;
    }
    m_pBuffer[m_nItems++] = item;
    
    Funkce Memory<T>::free( T *pointer ) volá free(pointer).
    Věřím v jednoho Boha.

    Odpovědi

    Jardík avatar 31.7.2006 21:07 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Uvolnění paměti způsobí SIGSEGV
    Jsem ale vůl. ::free(pointer) vyřešilo problém :-).
    Věřím v jednoho Boha.
    31.7.2006 21:13 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Uvolnění paměti způsobí SIGSEGV

    Jednak bych zkontroloval, zda Memory<T>::alloc() volá malloc(), jednak zda není problém v tom, že m_pBuffer není inicializovaný. Jestli není problém v tomhle, asi bude potřeba použít debugger a zjistit, za jakých okolností přesně ten SEGV nastává.

    Z čistě praktického hlediska bych pak doporučoval neprovádět tu (náročnou) realokaci po jednom prvku, ale nechat si trochu větší rezervu. Nebo rovnou použít některý kontejner ze standardní C++ knihovny.

    Jardík avatar 31.7.2006 22:06 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Uvolnění paměti způsobí SIGSEGV
    Docházelo jen k menší rekurzi :-)
    Rezervu jsem si nechával (viz. bufferSize).
    Věřím v jednoho Boha.

    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.