Odpověď na názor

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

  • 6. 9. 2012 12:10

    Ondřej Novák (neregistrovaný)

    [10]Tak to není problém sušenky, problém je v tom, že bodě 2 uděláte derefenci na objekt, který může být dávno uvolněný a paměť odmapovaná. V tu chvíli obdržíte SIGSEGV. Přitom to není chyba. Tu hodnotu, kterou byste chtěl získat byste použil, jen v případě, že by se nic nezměnilo. Ale ono se změnilo, proto by ta vyzvednutá hodnota stejně nebyla validní. Ale bez SEH máte krásně ležící system a musíte sáhnout po mutexech a výkon vám letí dolu. S možností odchytit SIGSEGV jako jeden další signál oznamující, že se "něco změnilo" je naprosto validní požadavek.

    [11] Tohle není problém IsBadReadPtr, tohle je problém použití systému chráněných stránek. Poškodit paměť vám může jakékoliv systémové volání, pokud dostane požadavek pracovat s daty ležící v chráněné stránce. Prostě chráněná stránka se chová nepředvídatelně tím, že při požadavku na čtení se odstraní. Není to náhodou tak, že by ten požadavek měl být zápisový? Tam bych to třeba u zásobníku chápal.