|
Boost : |
Subject: Re: [boost] Question for C++ experts about exception allocation failure
From: Peter Bindels (dascandy_at_[hidden])
Date: 2009-05-20 05:45:13
Hi,
2009/5/18 Anthony Williams <anthony.ajw_at_[hidden]>:
> I don't think exception objects are allocated on the stack in MSVC, and
> I don't see how they could be --- if an exception is caught then before
> the handler is entered the stack needs to be unwound and all the
> destructors run. Having an exception object lurking halfway down the
> empty stack space would just confuse things no end.
I debugged this once to find out what's what exactly and it is halfway
down the stack. The stack below it is unwound but it is not freed
until the end of the exception handler. The exception handler executes
on the stack just above (below) the exception, and the exception is
destroyed and the stack below it freed when it's done. This all is
based on empirical measurement.
When I figured it out it seemed like a good solution, except for the
case where you have just unwound a big stack and build up a new big
stack inside an exception handler. That seems an off-case that isn't
worth the trouble though.
Kind regards,
Peter Bindels
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk