I believe you need to specify /EHa
at compile time for SEH exceptions to invoke C++ destructors.
If /EH is not specified, the compiler will catch structured and C++ exceptions, but will not destroy C++ objects that will go out of scope as a result of the exception.
See MSDN for further details.