powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Вопрос, почему пустой экземпляр пустого класса весит 8 байт и как обнилить адресс потока
5 сообщений из 5, страница 1 из 1
Вопрос, почему пустой экземпляр пустого класса весит 8 байт и как обнилить адресс потока
    #40061441
Ildar007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет, такой вопрос почему экземпляр пустого класса весит 8 байт?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  System.Classes,
  System.Types;

type
  TMyClass = class(TObject)
  public
    //FMyVar : Integer;
    FMyVarOne, FMyVarFree, FMyVarFour : Integer;
    FChar: Char;
    FInt64, FInt64Two: Int64;
    function Summ(const AMyIntOne, AMyIntTwo: Integer): Integer;
  end;

  TMyClassTwo = class(TObject)
  public
  FMyArray : Array [1..1000] of Byte;
  end;

var

  MyObject: TMyClass;
  MyTwoObject: TMyClassTwo;
  LengthMemoryObject: Integer;
  Addr: DWord;

{ TMyClass }

function TMyClass.Summ(const  AMyIntOne, AMyIntTwo: Integer): Integer;
var
  I: Integer;

begin
  Result := AMyIntOne + AMyIntTwo;
end;

begin
  try
    MyObject := TMyClass.Create;
    MyTwoObject := TMyClassTwo.Create;

    LengthMemoryObject := MyTwoObject.InstanceSize;
    //LengthMemoryObject := InstanceSize(TMyClass);
    FreeAndNil(MyObject);
    Addr := DWord(Pointer(MyObject));
    Writeln(IntToStr(LengthMemoryObject));
    Writeln(IntToStr(Addr));
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
  Readln;

end.
...
Рейтинг: 0 / 0
Вопрос, почему пустой экземпляр пустого класса весит 8 байт и как обнилить адресс потока
    #40061442
Ildar007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ildar007
Всем привет, такой вопрос почему экземпляр пустого класса весит 8 байт?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  System.Classes,
  System.Types;

type
  TMyClass = class(TObject)
  public
    //FMyVar : Integer;
    FMyVarOne, FMyVarFree, FMyVarFour : Integer;
    FChar: Char;
    FInt64, FInt64Two: Int64;
    function Summ(const AMyIntOne, AMyIntTwo: Integer): Integer;
  end;

  TMyClassTwo = class(TObject)
  public
  FMyArray : Array [1..1000] of Byte;
  end;

var

  MyObject: TMyClass;
  MyTwoObject: TMyClassTwo;
  LengthMemoryObject: Integer;
  Addr: DWord;

{ TMyClass }

function TMyClass.Summ(const  AMyIntOne, AMyIntTwo: Integer): Integer;
var
  I: Integer;

begin
  Result := AMyIntOne + AMyIntTwo;
end;

begin
  try
    MyObject := TMyClass.Create;
    MyTwoObject := TMyClassTwo.Create;

    LengthMemoryObject := MyTwoObject.InstanceSize;
    //LengthMemoryObject := InstanceSize(TMyClass);
    FreeAndNil(MyObject);
    Addr := DWord(Pointer(MyObject));
    Writeln(IntToStr(LengthMemoryObject));
    Writeln(IntToStr(Addr));
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
  Readln;

end.



Дополнительно, из чего складывается размер экземпляра объекта класса?
...
Рейтинг: 0 / 0
Вопрос, почему пустой экземпляр пустого класса весит 8 байт и как обнилить адресс потока
    #40061445
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ildar007
Всем привет, такой вопрос почему экземпляр пустого класса весит 8 байт?

Указатель на информацию о классе + указатель на монитор.

Ildar007
Дополнительно, из чего складывается размер экземпляра объекта класса?

Размеры полей с учётом выравнивания + по указателю на каждый реализуемый интерфейс.
...
Рейтинг: 0 / 0
Вопрос, почему пустой экземпляр пустого класса весит 8 байт и как обнилить адресс потока
    #40061459
Ildar007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kazantsev Alexey, можно про указатель на монитор более подробно?(в гугле не нашел)
...
Рейтинг: 0 / 0
Вопрос, почему пустой экземпляр пустого класса весит 8 байт и как обнилить адресс потока
    #40061460
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Вопрос, почему пустой экземпляр пустого класса весит 8 байт и как обнилить адресс потока
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]