[Delphi]Packed Record和Record的區別

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

發佈了74 篇原創文章 · 獲贊 6 · 訪問量 42萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章