Also... soweit ich das sehe (bitte korrigieren, falls ich falsch liege..
, wird für jedes Interface ein zusätzliches Feld im
Ojekt angelegt. (siehe TObject.InitInstance in system.pas) . D.h. Wenn das Interface
hinzugefügt wird, erhöht sich der Speicher dementsprechend um 4Byte pro angelegtes Ojekt.
Man kann sich den Speicherverbrauch einer Klasse/Objekt auch per "InstanceSize" anschauen....
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
IIntf1 =
interface
['
{6AB3BE8C-8605-4ED6-97DA-CEED84E5B9F4}']
procedure Test1;
end;
IIntf2 =
interface
['
{A2614303-1914-4BBE-9D38-D306EF36B14B}']
procedure Test2;
end;
type
TObj1 =
class(TInterfacedObject, IIntf1)
public
procedure Test1;
procedure Test2;
end;
type
TObj2 =
class(TInterfacedObject, IIntf1, IIntf2)
public
procedure Test1;
procedure Test2;
end;
type
TForm1 =
class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var obj1 : TObj1;
obj2 : TObj2;
begin
obj1 := TObj1.Create;
obj1.Test1;
obj1.Free;
obj2 := TObj2.Create;
obj2.Test1;
obj2.Free;
end;
{ TObj1 }
procedure TObj1.Test1;
begin
ShowMessage('
Obj1 size:' + IntToStr(InstanceSize));
end;
procedure TObj1.Test2;
begin
ShowMessage('
obj1 test2');
end;
{ TObj2 }
procedure TObj2.Test1;
begin
ShowMessage('
Obj2 size: ' + intToStr(InstanceSize));
end;
procedure TObj2.Test2;
begin
ShowMessage('
test2');
end;
end.