Microsoft KB Archive/133068

= BUG: Deleting a Struct Typedef Causes C1059, C1063, or C1001 =

Article ID: 133068

Article Last Modified on 7/5/2005

-

APPLIES TO


 * Microsoft C/C++ Professional Development System 7.0
 * Microsoft Visual C++ 1.0 Professional Edition
 * Microsoft Visual C++ 1.5 Professional Edition
 * Microsoft Visual C++ 1.51
 * Microsoft Visual C++ 1.52 Professional Edition
 * Microsoft Visual C++ 5.0 Learning Edition
 * Microsoft Visual C++ 5.0 Learning Edition
 * Microsoft Visual C++ 4.2 Enterprise Edition
 * Microsoft Visual C++ 2.0 Professional Edition
 * Microsoft Visual C++ 4.0 Professional Edition
 * Microsoft Visual C++ 4.1 Subscription
 * Microsoft Visual C++ 4.2 Professional Edition

-



This article was previously published under Q133068



SYMPTOMS
The sample code fragment listed at the end of this article incorrectly deletes a typedef of a pointer to a structure, which generates the following compiler errors:  For Visual C++ 4.2 for Windows NT:

fatal error C1001: INTERNAL COMPILER ERROR (compiler file 'toil.c', line 4094)

 For Visual C++ 4.1 for Windows NT:

fatal error C1001: INTERNAL COMPILER ERROR (compiler file 'toil.c', line 4051)

 For Visual C++ 4.0 for Windows NT:

fatal error C1001: INTERNAL COMPILER ERROR (compiler file 'toil.c', line 3128)

 For Visual C++ 2.x for Windows NT:

fatal error C1001: INTERNAL COMPILER ERROR (compiler file 'toil.c', line 2847)

 For Visual C++ 1.0 for Windows NT:

fatal error C1001: INTERNAL COMPILER ERROR (compiler file '@(#)main.c:1.82', line 289)

 For Visual C++ version 1.5x for Windows:

fatal error C1059: compiler is out of near heap space

 For Visual C++ version 1.0 for Windows:

fatal error C1063

</li> For C/C++ version 7.0:

fatal error C1001: INTERNAL COMPILER ERROR (compiler file '2pass/getattr.c', line 346) Contact Microsoft Product Support Services

</li></ul>

<div class="resolution_section">

RESOLUTION
The above error messages are misleading and do not point out the real problem, which is that you cannot delete a typedef. Additionally, the operand of delete must be a pointer returned by the new operator. Using delete on a pointer to an object not allocated with new gives unpredictable results.

<div class="status_section">

STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article.

<div class="moreinformation_section">

Sample Code to Reproduce Problem
/* Compile options needed: none

typedef struct { int x; }MY_STRUCT, *LPMY_STRUCT;

LPMY_STRUCT pMyStruct = new MY_STRUCT;

void MyTestFunction {  delete pMyStruct;   // ok. delete LPMY_STRUCT; // Can not delete a type. }

Additional query words: 8.0 8.0c 8.00 8.00c 9.0 9.00 9.1 9.10 10.00 10.10 10.20

Keywords: kbbug kbcpponly kbcompiler KB133068

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.