Odpověď na názor

Odpovídáte na názor ke článku SEH v Linuxu (C++).

  • 5. 9. 2012 17:00

    Ondřej Novák (neregistrovaný)

    Doplnění: K čemu se hodí odchytávat SIGSEGV. Sdílené spojové seznamy

    Mějme ukazatel top na prvek spojového seznamu. a každý prvek má ukazatel next.

    Přidání do seznamu
    1. novy prvek v newitm
    2. newitm->next = top
    3. pokud top == newitm->next, pak top = newitm, jinak goto 2 (atomicky)

    Odebrání ze seznamu.
    1. vyzvedni top do cur_top
    2. vyzvedni cur_top->next do cur_next
    3. pokud je cur_top == top, pak top = cur_next, jinak goto 1 (atomicky)
    4. v cur_top mám odebraný prvek.
    5. pokud je v cur_top->next jiná hodnota než v cur_next, prvky navíc vrať zpět do seznamu (viz přidání).

    Oba algoritmy řeší nezamykatelné spojové seznamy, které zvládnou atomické odebrání či přidání prvku.

    Problém je v při odebrání v bodě 2. V tomto bodě totiž za určitých okolností může dojít k SIGSEGV. Schválně kdo uhodne kdy. Pak pochopíte, proč je potřeba někdy SIGSEGV odchytávat.