void va_end(va_list ap);

description

       Each invocation of va_start() must be matched by a corresponding invocation of
       va_end() in the same function.  After the call va_end(ap) the variable ap is
       undefined.  Multiple traversals of the list, each bracketed by va_start() and
       va_end() are possible.  va_end() may be a macro or a function.

The va_start(), va_arg(), and va_end() macros conform to C89. C99 defines the va_copy() macro.