logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Dlaczego otrzymuję jednakie dane w kwestii niespakowanych/spakowanych rekordów?

elakwiecinska 08 Maj 2018 14:41 579 2
REKLAMA
  • #1 17209944
    elakwiecinska
    Poziom 6  
    Posty: 6
    Uczę się programować w LAZARUSie. Dotarłam do tematu pakowania rekordów. Próbowałam wyświetlić, ile miejsca w pamięci zajmuje spakowany rekord i rekord niespakowany. Okazuje się, że tyle samo. Gdzie popełniam błąd.
    Listing programu:
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 17210578
    Dżyszla
    Poziom 42  
    Posty: 7075
    Pomógł: 1095
    Ocena: 224
    w dwukrotnym wywołaniu sizeof dla tego samego rekordu.
    A tak w ogóle dla takiego przykładu nie zobaczysz różnicy, gdyż tablice występujące po sobie z urzędu są trochę jak spakowane (dobrałaś taką długość - 44 (bajt na długość + ilość zdefiniowana), że jest wielokrotnością ostatniego typu). Porównaj sobie rekord z takimi polami jak byte+word i byte+integer na ten przykład. Jeśli już tablice ansicharów (czyli string[x]) to też z typami niewyrównywanymi do 4.

    Generalnie miej też na uwadze:
    1. Domyślne ustawienie pakowania rekordów w FP (możliwe, że i bez packed nie będą wyrównywane
    2. Domyślne wyrównanie przez kompilator.
REKLAMA