Odpovídáte na názor ke článku SEH v Linuxu (C++).
[1] Tak není to o C++, ale o tom, jak udělat SEH v C++. C++ jazyk se musí občas použít i na nějaké té nízké úrovni.
Každý nástroje je tak dobrý, jak správně je použit. Nikdo přece neříká, že je správné na začátku programu dát try a na konec except a napravovat nějaký náhodný pád. Ale pokud musím pracovat s blokem paměti, který během práce může být třeba uvolněn, nebo stát se nedostupným, například SIGBUS: Ten neovlivníte. Nezajistíte, že vám někdo při práci nevytáhne flashku z USBčka, na které máte namapovaný kus souboru do paměti.
Ano, asi je dobré říct, že bezpečnější je to použít jen ke čtení a to ještě velmi opatrně. Já například na to narazil při implementaci sdíleného spojového seznamu bez zamykání. Tam je v jeden moment operace derefernece pointeru a vyzvednotí hodnoty "next" z paměti. Ale co když tu paměť někdo mezitím uvolnil, odmapoval, zamknul? Dokážu vrácenou hodnotu zvalidovat a zjistím, že není platna, ale nedokážu odvrátit neplatnému přístupu do paměti.
Napište na google dotaz IsBadReadPtr on Linux a naleznete spoustu diskuzí, kde se najdou problémy, které podobné veci řeší. To vedlo k implementaci tohoto systému (IsBadReadPtr je ve Windows obsolete a řeší se to právě pomocí SEH)
Intenzivně se zabývám programováním zejména v jazyce C++. Vyvíjím vlastní knihovny, vzory, techniky, používám šablony, to vše proto, aby se mi usnadnil život při návrhu aplikací. Pracoval jsem jako programátor ve společnosti Seznam.cz. Nyní jsem se usadil v jednom startupu, kde vyvíjím serverové komponenty a informační systémy v C++
Přečteno 58 084×
Přečteno 27 882×
Přečteno 26 536×
Přečteno 24 439×
Přečteno 22 943×