В этом Q & A установлено, что вы всегда должны называть va_end()
:
Для чего именно va_end? Всегда ли нужно называть это?
Но что, если кусок кода longjmp, прежде чем вы достигнете va_end? Есть ли какое-либо обещание на стороне va_end, что все будет хорошо? Или концептуально может ли это (например) сделать выделение памяти в va_start()
, которое было бы пропущено, а просто использовать трюки с помощью стека?