Wpis z mikrobloga

@Kaczus2B: mój int ma wielkość 4B
Pytanie zadałem, bo obiekt składający się z 3 elementowej tablicy double zwraca mi wielkość 24B, a obiekt innej klasy, który składa się z inta określającego rozmiar tablicy i wskaźnika na tablicę 3 elementową typu double 16B, dlaczego akurat 16?
mój int ma wielkość 4B

Pytanie zadałem, bo obiekt składający się z 3 elementowej tablicy double zwraca mi wielkość 24B


@BotRekrutacyjny: Poszukaj za "struct padding" i "struct alignment". Na linuxa jest pahole ktory pokazuje ci uklad twojej struktury. Dla Visual Studio skompiluj z flaga /d1reportSingleClassLayoutXXX, gdzie XXX to nazwa twojej klasy lub /d1reportAllClassLayout zeby zobaczyc wszystkie.
@BotRekrutacyjny:

bo obiekt składający się z 3 elementowej tablicy double zwraca mi wielkość 24B,


Bo najwyrazniej twoj double ma rozmiar 8b.

a obiekt innej klasy, który składa się z inta określającego rozmiar tablicy i wskaźnika na tablicę 3 elementową typu double 16B, dlaczego akurat 16?


Bo twoj int ma rozmiar 8b, a wskaznik (obojetnie na jaki typ, no poza wskaznikami na metody w klasach) ma rozmiar najczesciej(?) inta, czyli twoje
int ma byc wiekszy badz rowny od short int i mniejszy badz rowny od longa. Takie ma ograniczenia. Jesli chcesz miec odpowiednia bitowosc korzystasz z typow int64_t i podobnych, tam masz gwarancje co do tego jak ten int wyglada.


@Kaczus2B: @BotRekrutacyjny:

Jeszcze tylko dorzuce odpowiedni fragment standardu potwierdzajcy to co mowi @Kaczus2B https://eel.is/c++draft/basic.fundamental#1
nizej znajduje sie tabelka pokazujace minimalne wartosci dla typow.