새소식

💻 Programming (프로그래밍)/C++

[C++] 바이트 패딩(Byte Padding)이란?

  • -

Q) 바이트 패딩이 무엇일까요

A) 구조체, 클래스에 패딩 바이트를 추가하여 CPU가 메모리 공간에 접근 하기 쉽게 만들어줍니다. 이는 메모리 낭비는 일어날 수 있지만 그보다 메모리의 크기를 맞춰서, CPU의 연산 횟수를 줄여주는 큰 장점이 있습니다.

 

Q) 어떻게 작동하나요

A) CPU 레지스터가 한 번에 읽을 수 있는 크기의 파일로 만들어줍니다.

32bit OS - 4byte

64bit OS - 8byte 기준이지만

바이트 패딩으로 한 결과는 또 색다릅니다.

 

32bit 기준

struct A {
char a; // 1byte
bool b; // 1byte
int c; // 4byte
}

 

이런식으로 4byte씩 끊어서 메모리공간에 저장해줍니다.

A 구조체의 size는 총 8byte가 됩니다.

 

 

또 다른 예시로는

struct A {
	long long a; // 8byte
	bool b;  // 1byte
};

 

이런 경우에는 12byte가 들어가는게 아닌, 8 + 8 byte로 16byte의 크기를 가진 구조체가 되더라구요.

 

 

즉 가장 큰 멤버 변수의 사이즈을 기준으로 byte padding을 하게 됩니다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.