FIX: C2466: Using New to Allocate an Array of Size ZeroLast reviewed: September 18, 1997Article ID: Q123811 |
7.00 | 1.00 1.50 1.51 | 1.00
MS-DOS | WINDOWS | WINDOWS NTkbtool kbfixlist kbbuglist The information in this article applies to:
SYMPTOMSIf a constant expression that evaluates to zero is used to allocate an array, the following error occurs:
error C2466: cannot allocate an array of constant size 0 RESOLUTIONTo work around the problem, use a variable that is initialized to zero in place of the constant when allocating the array.
STATUSMicrosoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. This bug was corrected in Visual C++, 32-bit Edition, version 2.0.
MORE INFORMATIONThe operator new() can be called with the argument zero. A distinct (non- null) pointer to an object will be returned (see Section 5.3.3 of the ARM - M.A.Ellis, B.Stroustrup). This is the behavior observed with Visual C++ version 2.0. The following sample code can be used to demonstrate the problem.
Sample Code to Reproduce Problem
/* Compile options needed: none */ char * p = new char[0]; // Causes C2466 |
Additional reference words: 1.00 1.50 7.00 8.00 8.00c
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |