定义结构体用关键字record和packed record 有区别吗?最好能举例说明,谢谢

解决方案 »

  1.   

    在Windows中内存的分配一次是4个字节的。而Packed按字节进行内存的申请和分配,这样速度要慢一些,因为需要额外的时间来进行指针的定位。因此如果不用Packed的话,Delphi将按一次4个字节的方式申请内存,因此如果一个变量没有4个字节宽的话也要占4个字节!这样就浪费了,你可以用packed关键字取消这种优化
      

  2.   

    去DFW上有一堆例子。
    至于原因,楼上的已经说的很明白了
      

  3.   

    例子:
    type
        MyRec = packed record
        n1 : integer;    4个字节
        n2 : shortint;   1个字节
    end;
    Sizeof(MyRec)------  5type
        MyRec = packed record
        n1 : integer;
        n2 : shortint;
    end;
    Sizeof(MyRec)------  8