Советы по Delphi



         

Управление размером сегмента данных - часть 4


Первый пример расходует 32 байта сегмента данных, второй всего-лишь 4 байта, но выполняет ту же задачу.

  1. { Объявление TMyStructure не вызовет никаких изменений в размере сегмента данных. }TMyStructure = recordName: String[10];Data: array[0..9] of Integer;end;
    varForm1: TForm1;
    { Объявление MyStructure вызовет увеличениеразмера сегмента памяти на 32 байта:указатель Mystructure = 1 байтName = 11 байт (10 символов + байт длины)Data = 20 байт (10 * 2 байт на целое)}MyStructure: TMyStructure;

  • { Объявление TMyStructure не вызовет никаких изменений в размере сегмента данных. }PMyStructure = ^TMyStructure;TMyStructure = recordName: String[10];Data: array[0..9] of Integer;end;
    varForm1: TForm1;{ MyDataPtr вызывает увеличение на 4 байтадля размещения указательной переменной. }MyDataPtr: PMyStructure;
    implementation
    {$R *.DFM}
    procedure TForm1.FormCreate(Sender: TObject);begin{ Здесь ресурсы берутся из кучи. }New(MyDataPtr);MyDataPtr.Name := 'Fred';MyDataPtr.array[0] := 560;Dispose(MyDataPtr);end;
  • Вы также можете разместить объявление переменной в пределах класса:

    typeTMyBigArray = array[1..100] of string
    TForm1 = class(TForm)public{ Это объявление не повлияет на размер сегмента данных. }MyBigArray: TMyBigArray;end;
    var{ Это объявление увеличивает сегмент данных на 25,600 байт. }MyOtherBigArray: TMyBigArray;

    [000944]




    Содержание  Назад