+ 5

Why depends the result on order of declaration of class, or struct members?

struct test { char a; int c; char b; }; struct test1 { char a;char b; int c; }; class test2 { char a; int c; char b; }; class test3 { char a; char b; int c; }; int main() { std::cout << sizeof(test) << std::endl; std::cout << sizeof(test1) << std::endl; std::cout << sizeof(test2) << std::endl; std::cout << sizeof(test3) << std::endl; std::cin.get(); return 0; }

9th Dec 2018, 1:09 AM
Petros Simidyan
Petros Simidyan - avatar
2 ответов
+ 3
Thanks @C++ Soldier (Babak) .
10th Dec 2018, 2:23 AM
Petros Simidyan
Petros Simidyan - avatar
+ 2
This SO Wiki addressed the question "Why does the sizeof operator return a size larger for a structure than the total sizes of the structure's members?" Like so "This is because of padding added to satisfy alignment constraints. [...] ¹" Note: See the example there. _____ ¹ https://stackoverflow.com/questions/119123/why-isnt-sizeof-for-a-struct-equal-to-the-sum-of-sizeof-of-each-member
9th Dec 2018, 8:58 AM
Babak
Babak - avatar