Article ID: 133068 - Last Review: July 5, 2005 - Revision: 1.1

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

This article was previously published under Q133068

On This Page

Expand all | Collapse all

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
  • For C/C++ version 7.0:
    fatal error C1001: INTERNAL COMPILER ERROR (compiler file '2pass/getattr.c', line 346) Contact Microsoft Product Support Services

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.

STATUS

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

MORE INFORMATION

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.
}
				

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++ 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
Keywords: 
kbbug kbcompiler kbcpponly KB133068
Retired KB ArticleRetired KB Content Disclaimer
This article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.
 

Article Translations