ELI5: SEH oder SJLJ für g++ 64bit?



  • Hab mir den MinGW-w64 installiert. Am Anfang fragt er ja ob ich SEH oder SJLJ möchte als exception handling. Ehrlich gesagt, so als Amateur, ich weiss nicht welches da vorteilhafter ist.
    Kann das jemand erklären bitte?



  • SjLj benutzt setjmp und longjmp aus der libc, Exceptionhandling setzt ständig Sprungziele mit setjmp und speichert noch ein paar Daten für das Handling auf dem Stack, viel runtime overhead
    SEH anderer Ansatz, Exceptionhandling wird nur beim Werfen aktiv, viel performanter, da kein Overhead bei normaler Programmauführung

    SjLj benutzt man kaum noch (zumindest auf x86).

    Übrigens du kannst mit Makros und setjmp/longjmp auch für C Exceptions basteln http://www.di.unipi.it/~nids/docs/longjump_try_trow_catch.html



  • gary1195 schrieb:

    SjLj benutzt setjmp und longjmp aus der libc, Exceptionhandling setzt ständig Sprungziele mit setjmp und speichert noch ein paar Daten für das Handling auf dem Stack, viel runtime overhead
    SEH anderer Ansatz, Exceptionhandling wird nur beim Werfen aktiv, viel performanter, da kein Overhead bei normaler Programmauführung

    SjLj benutzt man kaum noch (zumindest auf x86).

    Übrigens du kannst mit Makros und setjmp/longjmp auch für C Exceptions basteln http://www.di.unipi.it/~nids/docs/longjump_try_trow_catch.html

    Okay, danke dir für die Erklärung :). Dann lag ich mit SEH ja richtig.


Anmelden zum Antworten