INFO: C2466 Error When Allocating an Array of Length 0 (87015)



The information in this article applies to:

  • Microsoft Visual C++ for Windows, 16-bit edition 1.0
  • Microsoft Visual C++ for Windows, 16-bit edition 1.5
  • Microsoft Visual C++ for Windows, 16-bit edition 1.51
  • Microsoft Visual C++ for Windows, 16-bit edition 1.52
  • Microsoft Visual C++, 32-bit Editions 1.0

This article was previously published under Q87015

SUMMARY

When you use Microsoft C/C++, the constant expression that you use to allocate or declare an array must be an integral type greater than zero. If not, the following error will occur:
C2466: Cannot allocate an array of constant size 0
The following examples are some ways this error can occur:
   int *p = new X[0];        // error
   C *aC = new [int_var] C;  // error
   int a[0];                 // error
   int func(char *[0]);      // error
				
NOTE: This does not apply to Visual C++, 32-bit Edition, version 2.0 and later.

If you use the Microsoft extensions (/Ze), an array declaration with a zero subscript is legal for a class, structure, or union member. For more information about valid zero-sized arrays, search the Visual C++ online documentation for the topic "Unsized Arrays."

Modification Type:MajorLast Reviewed:10/24/2003
Keywords:kbCompiler kbCPPonly kberrmsg kbinfo KB87015