## FIX: sizeof Gives Incorrect Size for Based Structure Pointers

Q116446

    1.00
    WINDOWS
    kbprg kbfixlist kbbuglist

    ---------------------------------------------------------------------
    The information in this article applies to:

     - The Microsoft C/C++ Compiler (CL.EXE) included with:
        - Microsoft Visual C++ for Windows, version 1.0
    ---------------------------------------------------------------------

    SYMPTOMS
    ========

    The sizeof macro returns an incorrect size for based structure pointers in
    C++ code under the compact-memory, large-memory, and huge-memory models. In
    C code, sizeof returns 2 bytes for a based structure pointer, but the
    return value is 4 bytes in C++ code.

    STATUS
    ======

    Microsoft has confirmed this to be a problem with the C/C++ Compiler for MS-
    DOS, version 8.0. This problem was corrected with the C/C++ Compiler for MS-
    DOS, version 8.0c that was included with Visual C++ for Windows, version
    1.5.

    MORE INFORMATION
    ================

    You can use the sample code below to reproduce this problem. If you compile
    the example as a C++ file, sizeof(t.left) returns 4 bytes and sizeof(test)
    returns 2 bytes. In a C file, both expressions return 2 bytes.

    Sample Code
    -----------

    /* Compile options needed: /AL (/AC or /AH)
    */

       #include <stdio.h>

       typedef struct tree TREE;

       struct tree
       {
          int name;
          TREE __based( (__segment)__self ) *next;
       };

       int __based((__segment)__self) *test;

       void main(void)
       {
          struct tree t;

          t.name = 1;

          printf("sizeof(t)       = %d bits\n", sizeof(t) * 8);
          printf("sizeof(t.name)  = %d bits\n", sizeof(t.name) * 8);
          printf("sizeof(t.name)  = %d bits\n", sizeof(t.next) * 8);
          printf("sizeof(test) = %d bits\n", sizeof(test) * 8);
       }

    Additional reference words: 8.00 1.00 fixlist8.00c fixlist1.50 buglist8.00
    buglist1.00
    KBCategory: kbprg kbfixlist kbbuglist
    KBSubcategory: CPPIss

Keywords : kb16bitonly kbCompiler kbCPPonly kbVC
Issue type :
Technology : kbVCsearch kbAudDeveloper kbCVCComp

Last Reviewed: May 5, 2001 © 2001 Microsoft Corporation. All rights reserved. Terms of Use.