The information in this article applies to:
SYMPTOMSCalling one of the string conversion macros, such as OLE2T or T2OLE, inside a catch block of a try/catch exception handler causes an access violation. CAUSESome of the string conversion macros will call _alloca(). However, _alloca() cannot be used inside an exception handler. RESOLUTIONUse MultiByteToWideChar() or WideCharToMultiByte() rather than string conversion macros inside an exception handler. STATUSThis behavior is by design. MORE INFORMATION
Exception Handler (EH) routines that run on x86-class processors operate in
their own memory "frame:" that is, they perform their tasks in memory space
that is not based on the current location of the stack pointer of the
enclosing function. Therefore, explicitly calling _alloca in any of the
following scenarios results in program failure during the return to the
calling EH routine:
Steps to Reproduce Behavior
REFERENCES
Visual C++ Online Documentation for _alloca()
© Microsoft Corporation 1998, All Rights Reserved. Additional query words: A2W A2CW T2OLE OLE2W A2OLE A2T T2W W2A W2CA OLE2T W2OLE OLE2A T2A W2T
Keywords : kbATL kbATL210 kbExceptHandSEH kbVC500 kbVC600 kbATL300 kbGrpMFCATL kbExceptHandCPP |
Last Reviewed: November 23, 1999 © 2000 Microsoft Corporation. All rights reserved. Terms of Use. |