struct 구조체 크기 구할 때 padding이 어느 정도 붙는지 알 수 있을까요? (구조체 padding 공식 문의)

high385의 이미지

struct test {
char code;
double value;
short test1;
};

위와 같이 있을 때 sizeof(test)하면 1+8+2 = 11이 될 듯 하지만 더 크게 20으로 나오는데 각 구조체 멤버간의 padding 때문으로 알고 있습니다.
이 padding이 몇 바이트가 될지에 대한 공식이 있나요? 아니면 매번 달라지나요?

익명 사용자의 이미지

아키텍쳐에 따라서도 달라지고.. 컴파일러 확장 지시자나 옵션으로도 달라질 수 있고..

특수한 경우가 아니면, 공식보다는 그게 환경에 따라 달라질 수 있다는 걸 가정해서 프로그래밍하시는게 좋을 듯 합니다. offsetof 같은 매크로 활용하시고요.