::public/C++
byte padding(바이트 패딩)
해맑은욱
2023. 1. 18. 10:04
바이트 패딩
성능향상을 위해서 클래스나 구조체의 경우,
가장 큰 사이즈를 차지하는 자료타입에 맞춰 현재 데이터타입 뒤에 임의의 바이트를 추가하여
CPU가 메모리 공간에 접근하기 용이하게 해준다.(컴파일러의 최적화 기능)
class BytePadding
{
int i4; // 4 byte
char c[3]; // 3 byte
short s2; // 2 byte
};
BytePadding bt;
cout << sizeof(bt) << endl; // 12 byte
int(4 byte) + char(3 byte) + short(2 byte) = 9 byte 로 생각할 수 있지만 결과는
int(4 byte) + char(3 byte) + padding byte(1 byte) + short(2 byte) + padding byte(1 byte) = 12 byte 가 됨.
| i | i | i | i | c | c | c | | s | s | | | <- 메모리 공간 상태