pl.comp.lang.delphi
[Top] [All Lists]

Re: Wielkość rekordu

Subject: Re: Wielkość rekordu
From: dziobu
Date: Wed, 30 Jul 2008 19:31:49 +0200
Newsgroups: pl.comp.lang.delphi


Dnia 7/30/2008 7:09 PM, Użytkownik Mariusz napisał:
Witam.
Mam takie proste pytanko :-). W jaki sposób liczona jest wielkość rekordu w Delphi? Gdzieś przeczytałem, że niespakowany rekord zajmuje tyle, ile wielokrotność największego jego pola (czyli ilość jego pól razy wielkość największego z nich). Faktycznie sprawdza się to, ale niezawsze. Jak to dokładnie wygląda?

Dla 1 elementu działa tak jak zwykła zmienna:

TTest = record
 a : Byte;
end;

sizeof(TTest) = 1

TTest2 = packed record
 a : Byte;
end;

sizeof(TTest) = 1


Dla wielu elementów:

TTest = record
 a : Byte;
 b : Integer;
end;

sizeof(TTest) = 8

Tutaj niespakowany ma sizeof zaokrąglony do 4 bajtów w góre.


TTest2 = packed record
 a : Byte;
 b : Integer;
end;

sizeof(TTest) = 5


A tu normalnie.

--
Pozdrawiam
dziobu

<Prev in Thread] Current Thread [Next in Thread>
Privacy Policy