--%>

Use of setjmp and longjmp

Use of setjmp() and longjmp(): In C/C++, setjmp() saves the contents of the registers at a particular state in the program and longjmp() will restore that state later. In this way, longjmp() “returns” to the state of the program when setjmp() was called.

In general these functions are problematic for C++ because they do not support C++ object semantics. In particular, they do not ensure the proper destructor calls and so objects may not be cleaned up properly, leaving the system in a bad state.

Using these functions may also degrade performance by preventing optimization on local variables. For C++ exception handling, try/catch constructs are recommended instead.

214_serjmp.jpg

For model checking in particular, non-hierarchical long jumps are difficult to model with modeling languages like Java. These functions need to do register restoration which requires modeling of registers and their related operations, adding considerable overhead to model-checking effort.

   Related Questions in Programming Languages

  • Q : What is Bridging method Bridging method

    Bridging method: A method which offers a bridge between methods of a class's public interface and its private implementation. Bridging methods will usually contain non-public visibility.

  • Q : What is Break statement Break statement

    Break statement: A statement employed to break out of a loop, switch statement or labeled block. In all situations, control continues with the statement instantly, subsequent to the containing block.

  • Q : Define owns to the Kernel Object Define

    Define owns to the Kernel Object? Answer: Kernel objects are owned through the kernel, not through a process.

  • Q : Define several features of XQuery

    Define several features of XQuery?

  • Q : What is Unique Identifier What is

    What is Unique Identifier and how do I determine one?

  • Q : What is SLAM SLAM is a Microsoft

    SLAM is a Microsoft project that blurs the line between static analysis and model checking and deductive reasoning. The main goal of SLAM is to check temporal safety properties of C programs (it actually checks that a program correctly uses the interf

  • Q : Explain the COM components Explain the

    Explain the COM components?

  • Q : What is an Overriding for breadth

    Overriding for breadth: It is a form of method overriding in which the sub-class version of a technique implements its own behavior within the context of attributes and behavior of the sub-class and then calls the super-class version and hence it can

  • Q : What is Primitive Type Casting

    Primitive Type Casting: C/C++ allows you to cast between totally unrelated types. This can be problematic for model checking. Avoid type casting between unrelated types and in particular primitive types. For example,

    Q : Define Out of scope Out of scope : It

    Out of scope: It is a variable is in scope as long as the program's flow of control is in the variable's defining block. Or else, this is out of scope.