1. 程式人生 > >Delphi中的記憶體對齊 與 Packed關鍵字

Delphi中的記憶體對齊 與 Packed關鍵字

Record的資料各個位元組都是對齊的,資料格式比較完整,所以這種格式相對packed佔用的記憶體比較大,
但是因為格式比較整齊,所以電腦讀取這個型別的資料的時候速度比較快。

而Packed Record對資料進行了壓縮,節省了記憶體空間,當然他的速度也變的慢了。

  type  
      //    Declare    an    unpacked    record  
      TDefaultRecord    =    Record  
          name1        :    string[4];  
          floater    :    single;  
          name2        :    char;  
          int            :    Integer;  
      end;  
      //    Declare    a    packed    record  
      TPackedRecord    =    Packed    Record  
          name1        :    string[4];  
          floater    :    single;  
          name2        :    char;  
          int            :    Integer;  
      end;  
  var  
      defaultRec    :    TDefaultRecord;  
      packedRec      :    TPackedRecord;  
  begin  
      ShowMessage('Default    record    size    =    '+IntToStr(SizeOf(defaultRec)));  
      ShowMessage('Packed    record    size    =    '+IntToStr(SizeOf(packedRec)));  
  end;  
   
    Default    record    size    =    20  
    Packed    record    size    =    14  

不過,對於現在的作業系統來,packed Record 節省的那些空間已不用考慮他了。除了做DLL(不用packed容易造成記憶體混亂)和做硬體
程式設計時(比如串列埠)程式設計時必須用到packed Record,其它情況都可以用Record