pragma pack(3)이라 언급하면, 3바이트 단위로 레지스터를 정렬하지 않나요?

mydream의 이미지

pragma pack( n) 이라는 전처리기 명령어가 실행되면 레지스터 정렬이 n바이트 단위로 이루어지는 것으로 압니다. 그렇다면 다음의 Something이라는 구조체를 3바이트 단위로 정렬하면, 그 데이터의 크기는 얼마가 될까요?

#include <iostream>
using namespace std;
#pragma pack(3)
struct Something {
	int num;
	char ch1;
};
int main() {
	cout<<sizeof(Something)<<endl;
	return 0;
}

결과는 8바이트가 나옵니다. 그런데 3바이트 단위로 레지스터를 정렬하기 때문에 6이 출력되어야 하는 것 아닌가요? 그러니까

| 1 | 2 | 3 | 4 | 5 | 6 |
1~4까지는 num, 5는 ch1이 차지하면 마지막의 6이 남는 것으로 저는 이해를 했는데요. 왜냐하면 3바이트 단위로 데이터가 잘릴 것이라 기대했기 때문입니다. 저 전처리에 입력한 숫자가 3이기 때문에요. 왜 8이 출력되는 것인가요?

mydream의 이미지

pragma pack(n)에서 n에 가능한 값은 2, 4, 8이라 하는군요. 2를 언급하고 해보니 6이라 출력됩니다.