💻 Programming (프로그래밍)/C++ [C++] 바이트 패딩(Byte Padding)이란? - Q) 바이트 패딩이 무엇일까요 A) 구조체, 클래스에 패딩 바이트를 추가하여 CPU가 메모리 공간에 접근 하기 쉽게 만들어줍니다. 이는 메모리 낭비는 일어날 수 있지만 그보다 메모리의 크기를 맞춰서, CPU의 연산 횟수를 줄여주는 큰 장점이 있습니다. Q) 어떻게 작동하나요 A) CPU 레지스터가 한 번에 읽을 수 있는 크기의 파일로 만들어줍니다. 32bit OS - 4byte 64bit OS - 8byte 기준이지만 바이트 패딩으로 한 결과는 또 색다릅니다. 32bit 기준 struct A {char a; // 1bytebool b; // 1byteint c; // 4byte} 이런식으로 4byte씩 끊어서 메모리공간에 저장해줍니다. A 구조체의 size는 총 8byte가 됩니다. 또 다른 예시로는 struct A { long long a; // 8byte bool b; // 1byte }; 이런 경우에는 12byte가 들어가는게 아닌, 8 + 8 byte로 16byte의 크기를 가진 구조체가 되더라구요. 즉 가장 큰 멤버 변수의 사이즈을 기준으로 byte padding을 하게 됩니다. 공유하기 URL 복사카카오톡 공유페이스북 공유엑스 공유 게시글 관리 구독하기천리길도 한걸음씩 저작자표시 Contents Q)바이트패딩이무엇일까요 A)구조체,클래스에패딩바이트를추가하여CPU가메모리공간에접근하기쉽게만들어줍니다.이는메모리낭비는일어날수있지만그보다메모리의크기를맞춰서,CPU의연산횟수를줄여주는큰장점이있습니다. Q)어떻게작동하나요 A)CPU레지스터가한번에읽을수있는크기의파일로만들어줍니다. 즉가장큰멤버변수의사이즈을기준으로bytepadding을하게됩니다. 당신이 좋아할만한 콘텐츠 [C++] 레퍼런스(References) 2022.04.13 [C++] 포인터 사용 예제 2022.04.13 [C++] 배열의 콜스택은 어떻게 쌓일까 2022.04.11 [C++] 함수 오버로딩 (Function Overloding) 2022.04.10 댓글 0 + 이전 댓글 더보기