我定义了一个结构  TRR=record
    cmdd:array[1..3] of byte;
  end;
这时sizeof(TRR)得到3.  TRR=record
    crc:dword;
  end;
这时sizeof(TRR)得到4.  TRR=record
    cmdd:array[1..3] of byte;
    crc:dword;
  end;
这时sizeof(TRR)得到的怎么是8呢?  TRR=record
    p1:byte;
    p2:byte;
    ccd:char;
    cmdd:array[1..3] of byte;
    crc:dword;
  end;
这时sizeof(TRR)得到的竟然是12?!这是怎么回事?请高手告诉我.

解决方案 »

  1.   

    delphi有内部调整机制,如果前面一个变量占2个字节,后面一个占1个,delphi会自动扩展到4个字节;以前在书上见过,但印象不深,不能给出具体的书面解释!
      

  2.   

    TRR=packed record
        p1:byte;
        p2:byte;
        ccd:char;
        cmdd:array[1..3] of byte;
        crc:dword;
      end;
    这样就行了。
      

  3.   

    不是sizeof的问题,是你没有弄清楚 packed record 和record的概念