オブジェクトのサイズを取得する
75 ClassInstanceSize 動作確認 Delphi2007 更新日 2008/02/03(日)

record型や変数のサイズを知るにはSizeOf関数を使います。

クラスの場合実質ポインタですので
SizeOfを使ってもポインタが
32bit整数値なので"4バイト"としか取得できません。

そこで  TObject.InstanceSize を使ってサイズを取得することができます。
────────────────────
type
  TInteger = record
    FMember: Integer;
  end;

  TIntegerClass = class
    FMember: Integer;
  end;

  TMyRecord = record
    FMember: array[0..9] of Integer;
  end;

  TMyClass = class
    FMember: array[0..9] of Integer;
  end;

procedure TForm1.Button1Click(Sender: TObject);
var
  size: integer;
begin
  size := SizeOf(TInteger);
  Memo1.Lines.Add(IntToStr(size));

  size := TIntegerClass.InstanceSize;
  Memo1.Lines.Add(IntToStr(size));

  size := SizeOf(TMyRecord);
  Memo1.Lines.Add(IntToStr(size));

  size := SizeOf(TMyClass);
  Memo1.Lines.Add(IntToStr(size));

  size := TMyClass.InstanceSize;
  Memo1.Lines.Add(IntToStr(size));
end;
────────────────────
実行結果は次のようになります。
    4
    8
    40
    4
    44

クラスがrecord型より4バイト増えています。


参考────────────────────
[Delphi:51020] Re: クラスのサイズ 
http://www2.big.or.jp/~osamu/Delphi/browse.cgi?index=51020

[Delphi-ML:51016] クラスのサイズ(Re:動的に recordを作成するには)
http://www2.big.or.jp/~osamu/Delphi/browse.cgi?index=51016
    ここにはClass型が4バイトだけ理由が書かれていて
    VMTという単語がでています。
    VMTについて調べてみると

    VMT(仮想メソッドテーブル)とは何か
    http://kakinotane.s7.xrea.com/delphi/faq/f002.html#i4

    ここが参考になります。