Longjmp, Malloc, Longjmp malloc – Zilog EZ80F916 User Manual
Page 369

UM014423-0607
C Standard Library
ZiLOG Developer Studio II
eZ80Acclaim!
®
User Manual
349
longjmp
Restores the environment saved by the most recent call to
setjmp
in the same invocation
of the program, with the corresponding jmp_buf argument. If there has been no such call,
or if the function containing the call to
setjmp
has executed a
return
statement in the
interim, the behavior is undefined.
All accessible objects have values as of the time
longjmp
was called, except that the val-
ues of objects of automatic storage class that do not have
volatile
type and have been
changed between the
setjmp
and
longjmp
call are indeterminate.
As it bypasses the usual function call and return mechanisms, the
longjmp
function exe-
cutes correctly in contexts of interrupts, signals, and any of their associated functions.
However, if the
longjmp
function is invoked from a nested signal handler (that is, from a
function invoked as a result of a signal raised during the handling of another signal), the
behavior is undefined.
Synopsis
#include
void longjmp(jmp_buf env, int val);
Returns
After
longjmp
is completed, program execution continues as if the corresponding call to
setjmp
had just returned the value specified by
val
. The
longjmp
function cannot cause
setjmp
to return the value 0; if val is 0,
setjmp
returns the value 1.
Example
int i;
jmp_buf env;
i=setjmp(env);
longjmp(env,i);
malloc
Allocates space for an object whose size is specified by
size
.
NOTE: The existing implementation of
malloc()
depends on the heap area being located from
the bottom of the heap (referred to by the symbol __heapbot) to the top of the stack (SP).
Care must be taken to avoid holes in this memory range. Otherwise, the
malloc()
function might not be able to allocate a valid memory object.
Synopsis
#include
void *malloc(size_t size);