FIX: Application Error If /Og & Virtual Operator Call in Loop
Article ID: 131000
Article Last Modified on 7/5/2005
APPLIES TO
- Microsoft Visual C++ 2.0 Professional Edition
- Microsoft Visual C++ 2.1
This article was previously published under Q131000
SYMPTOMS
An application error is generated when running a program that meets all
these conditions:
- It was compiled with global optimization (/Og).
- It defines a virtual operator for a class.
- It constructs an object of that class inside a loop.
- The operator is called inside the loop.
CAUSE
The computation of the address of the virtual operator is being lifted out
of the loop.
RESOLUTION
Use any one of the following four workarounds:
- Move the object outside the loop.
-or-
- Use the functional form of the operator.
-or-
- If the operator does not need to be virtual, do not declare it virtual.
-or-
- Do not do global optimizations.
STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listed
at the beginning of this article. This problem was fixed in Microsoft
Visual C++, 32-bit Edition, version 4.0.
Additional query words: 2.00 2.10 9.0 9.1 9.00 9.10
Keywords: kbbug kbfix kbcodegen kbcpponly kbcompiler KB131000