KnowledgeBase Archive

An Archive of Early Microsoft KnowledgeBase Articles

View on GitHub

Q37205: Operator sizeof Returns Type size_t, Defined as unsigned int

Article: Q37205
Product(s): See article
Version(s): 5.00 5.10 | 5.10
Operating System(s): MS-DOS | OS/2
Keyword(s): ENDUSER | docerr | mspl13_c
Last Modified: 21-NOV-1988

The sizeof operator returns a value that is of type size_t. The
definition of size_t is implementation-dependent, according to the
ANSI standard. In Microsoft C, the size_t type is defined in STDEF.H
and in MALLOC.H as an unsigned int. This information is documented in
the "Microsoft C Optimizing Compiler Run-Time Library Reference" on
Pages 38 and 98.

To use sizeof on huge items, which can be larger than 64K, you will
need to use a typecast on the sizeof expression as follows:

   char huge a[95000];
   unsigned long sizea;

   sizea = (unsigned long) sizeof(a);

Note: the Index entry for "size_t type" lists Pages 38 and 97; it
should say Pages 38 and 98.

The "Microsoft C Optimizing Compiler Language Reference" manual
describes the sizeof operator on Pages 120-121, section 5.3.4, but
does not give the return type.

THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Copyright Microsoft Corporation 1986-2002.